diff --git a/.env.dist b/.env.dist index d0919114..14bfd621 100644 --- a/.env.dist +++ b/.env.dist @@ -1,5 +1,7 @@ -# Tests -WEB3_HOST_PROVIDER= -WALLET_PRIVATE_KEY= -DEBUG_TESTS= +# Chain rpc to use with the tests +CI_WEB3_HOST_PROVIDER= + +# Memnonic phrase (12 words) for CI to use as accounts +CI_MNEMONIC= +# If left empty, will default to hardhat default (test.... junk) \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 63968a2e..1d269cb6 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,5 +4,5 @@ **/coverage/* **/test/* **/tooling/* -**/src/interfaces/methods/* +**/src/interfaces/generated/* **/src/interfaces/events/* diff --git a/.eslintrc b/.eslintrc index aed006b0..33d07f55 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,7 +2,6 @@ "parser": "@typescript-eslint/parser", "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], "rules": { - "indent-legacy": ["error", 2, { "FunctionDeclaration": { "parameters": "first" @@ -18,7 +17,9 @@ "camelcase": 0, "no-underscore-dangle": 0, "class-methods-use-this": 1, - "no-unused-vars": 1, + "no-unused-vars": 0, + "@typescript-eslint/no-unused-vars": ["warn", { "varsIgnorePattern": "^_" }], + "@typescript-eslint/no-non-null-assertion": 0, "complexity": ["error", 4], "max-len": [ "error", @@ -37,7 +38,8 @@ "function-call-argument-newline": [ "error", "consistent" - ] + ], + "@typescript-eslint/no-explicit-any": 0 }, "env": { "browser": true, diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index df058aff..c5c8d719 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,18 +1,2 @@ ---- -name: Bragging rights -about: Create a pull request to improve something for bragging rights -labels: bug, needs-triage - ---- - -** Relates to ** - - - - - \ No newline at end of file +**Describe the PR** + \ No newline at end of file diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index a6b88e4e..f90bdae4 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -13,12 +13,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [16.15.0] + node-version: [21.1.0] environment: [build] + environment: build steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: Install Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} @@ -35,3 +36,4 @@ jobs: run: npm run test-ci env: CI: true + CI_MNEMONIC: test test test test test test test test test test test junk diff --git a/.gitignore b/.gitignore index 3d0009b1..8338d900 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules/ -.env +.env* +!.env.dist .idea xunit.xml build/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a91c0fbd..d7c73616 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,3 @@ ---- -noteId: "0d1b7090b1d311eb8c4ed19e49359bd0" -tags: [] - ---- - # Contributor's Guide Welcome; we appreciate you and would like to thank you for contributing to our project. This document aims to facilitate the process and share with you some structure that hopefully will remove any roadblock. @@ -70,4 +64,8 @@ $ git commit -m "MESSAGE" $ git push origin master ``` +--- + +[Read on how to create models and integration tests](./how-to/contributing); + If you have any comment or ideas in terms of making this process better, please let us know or submit a PR. diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md deleted file mode 100644 index f09953d7..00000000 --- a/DEPENDENCIES.md +++ /dev/null @@ -1,8 +0,0 @@ -## Dependencies -These are dependencies needed for packages dappkit makes use of and should only need these for development. - -### Python 3 -https://www.python.org/downloads/ - -### node-gyp -https://github.com/nodejs/node-gyp#installation \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index e68ff82a..b9ba17a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,12 +32,6 @@ RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.38.0/install.sh | b ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules ENV PATH $NVM_DIR/v$NODE_VERSION/bin:$PATH -RUN apt-get -y update -RUN apt-get install -y g++ make python2 -RUN update-alternatives --install /usr/bin/python python /usr/bin/python2 1 -RUN update-alternatives --config python -RUN npm config set python python - WORKDIR /app COPY package*.json ./ @@ -47,5 +41,4 @@ COPY . . RUN npm run-script build -EXPOSE 9012 -CMD npm run watch +RUN npm run-script docs \ No newline at end of file diff --git a/Makefile b/Makefile index de1a0f6c..55026b54 100644 --- a/Makefile +++ b/Makefile @@ -43,10 +43,6 @@ up: down: @docker-compose -p ${PROJECT_NAME} down -## watch - Watch and build files -watch: - @docker-compose -p ${PROJECT_NAME} up - ## build - Build images. build: @docker-compose -p ${PROJECT_NAME} build @@ -55,6 +51,6 @@ build: test: @docker-compose -p ${PROJECT_NAME} exec bepro npm run test -## ganache.start - Start ganache -ganache.start: - @docker-compose -p ${PROJECT_NAME} exec bepro npm run ganache:start +## hardhat.start - Start hardhat node +hardhat.start: + @docker-compose -p ${PROJECT_NAME} exec bepro npm run hardhat:start diff --git a/README.md b/README.md index 1a527769..856ee3d8 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # dappkit A javascript SDK for web3 projects with curated community contracts to ease development and interactions with blockchain contracts. -![Build Status](https://img.shields.io/github/actions/workflow/status/taikai/dappkit/integration-tests.yml) -[![GitHub issues](https://img.shields.io/github/issues/taikai/dappkit)](https://GitHub.com/taikai/dappkit/issues/) +![Build Status](https://img.shields.io/github/actions/workflow/status/layerx-labs/dappkit/integration-tests.yml) +[![GitHub issues](https://img.shields.io/github/issues/layerx-labs/dappkit)](https://GitHub.com/taikai/dappkit/issues/) ![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg) [![License](https://img.shields.io/badge/license-ISC-blue.svg)](https://opensource.org/licenses/ISC) @@ -14,53 +14,83 @@ $ npm install @taikai/dappkit ``` ## Usage +`dappkit` offers tokens ([ERC20](https://sdk.dappkit.dev/classes/ERC20.html), [ERC721](https://sdk.dappkit.dev/classes/Erc721Standard.html), [ERC1155](https://sdk.dappkit.dev/classes/ERC1155Ownable.html) and [ERC4626](https://sdk.dappkit.dev/classes/ERC4626.html)) along with some other contracts, such as [Staking](https://sdk.dappkit.dev/classes/StakingContract.html) and [Voting](https://sdk.dappkit.dev/classes/Votable.html), for ease of use. you can check all the models over at the [SDK Documentation](https://sdk.dappkit.dev/). +### Simple browser connection ```ts -import {ERC20} from '@taikai/dappkit'; +import {Web3Connection} from '@layerx-labs/dappkit'; -const erc20 = new ERC20({ web3Host: process.env.WEB3_HOST_PROVIDER }); +const web3Connection = new Web3Connection({web3Host: 'https://rpc.tld'}); +await web3Connection.connect(); + +console.log(`Address`, await web3Connection.getAddress()); +``` -await erc20.connect(); // connect web3 by asking the user to allow the connection and interact with the chain +It's possible to provide [more options](https://sdk.dappkit.dev/interfaces/Web3ConnectionOptions.html) (such as `privateKey`) to the `Web3Connection` class. +> Note: a Server side connection does not need to call `connect()` and should _when needed_ provide a `privateKey` -const tx = - await erc20Deployer.deployJsonAbi( - 'Token Name', // the name of the token - '$tokenSymbol', // the symbol of the token - "1000000000000000000000000", // the total amount of the token (with 18 decimals; 1M = 1000000000000000000000000) - "0xOwnerOfErc20Address" // the owner of the total amount of the tokens (your address) - ); +### Creating ERC20 tokens -await erc20.transfer('0xYourOtherAddress', 1); // transfer 1 token from your address to other address -console.log(await erc20.balanceOf('0xYourOtherAddress')) // 1 +```ts +import {ERC20} from '@layerx-labs/dappkit'; + +const erc20 = new ERC20({ web3Host: 'http://rpc.tld' }); + +await erc20.deployJsonAbi( + 'Token Name', // the name of the token + '$tokenSymbol', // the symbol of the token + "1000000000000000000000000", // the total amount of the token (with 18 decimals; 1M = 1000000000000000000000000) + "0xOwnerOfErc20Address" // the owner of the total amount of the tokens (your address) +); + +console.log(`ERC20 address`, erc20.contractAddress); ``` +> Note: Full model documentation [on the sdk](https://sdk.dappkit.dev/classes/ERC20.html) -### Just want to start a connection? +### Creating ERC721 NFTs ```ts -import {Web3Connection} from '@taikai/dappkit'; +import {ERC721Collectibles} from '@layerx-labs/dappkit' -const web3Connection = new Web3Connection({web3Host: 'https://rpc.tld'}); +const erc721 = new ERC721Collectibles({web3Host: 'http://rpc.tld'}); -await web3Connection.connect(); +await erc721.deployJsonAbi( + `Token Name`, + `$token_symbol`, + 1, // how many packs can be open of this collectible (0 = infinite) + `0xAddressOfPurchasingAddress`, // address of the erc20 used to open packs + `0xBaseFeeAddress`, // address for where the main fee goes + `0xFeeAddress`, // address for where fee from purchases and pack shares + `0xAnotherAddress`); // adress for pack shares fee -console.log(`Address`, await web3Connection.getAddress()); +console.log(`ERC721 address`, erc721.contractAddress) ``` +> Note: Full model documentation [on the sdk](https://sdk.dappkit.dev/classes/ERC721Collectibles.html) -### Server side? +### Creating ERC1155 ```ts -import {Web3Connection, Web3ConnectionOptions} from '@taikai/dappkit'; +import {ERC1155Ownable} from "@layerx-labs/dappkit"; -const web3ConnecitonOptions: Web3ConnectionOptions = { - web3Host: 'https://rpc.tld', - // no need to provide privateKey for read-only - privateKey: 'your-private-key', // never share your private key -} +const erc1155 = new ERC1155Ownable({web3Host: 'http://rpc.tld'}); -const web3Connection = new Web3Connection(web3ConnecitonOptions); +await erc1155.deployJsonAbi('http://my.token-uri.tld/'); -console.log(`Address`, await web3Connection.getAddress()); +console.log(`ERC1155 address`, erc1155.contractAddress); +``` +> Note: Full model documentation [on the sdk](https://sdk.dappkit.dev/classes/ERC1155Ownable.html) + +### Creating ERC4626 +```ts +import {ERC4626} from "@layerx-labs/dappkit"; + +const erc4626 = new ERC4626({web3Host: 'http://rpc.tld'}) + +await erc4626.deployJsonAbi(`0xUnderlyingERC20Address`, `Vault Name`, `$vault_symbol`); + +console.log(`ERC4626 address `, erc4626.contractAddress); ``` +> Note: Full model documentation [on the sdk](https://sdk.dappkit.dev/classes/ERC4626.html) ## Documentation diff --git a/contracts/ERC1155Standard.sol b/contracts/ERC1155Standard.sol deleted file mode 100644 index 54f514b1..00000000 --- a/contracts/ERC1155Standard.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; - -contract ERC1155Standard is ERC1155 { - - constructor (string memory uri) public ERC1155(uri) { } - - function setURI(string memory uri) public { - _setURI(uri); - } - - function mint(address to, uint256 tokenId, uint256 amount, bytes memory data) public { - _mint(to, tokenId, amount, data); - } - - function mintBatch(address to, uint256[] memory tokenIds, uint256[] memory amounts, bytes memory data) public { - _mintBatch(to, tokenIds, amounts, data); - } - -} \ No newline at end of file diff --git a/contracts/ERC20.sol b/contracts/ERC20.sol deleted file mode 100644 index 1132189a..00000000 --- a/contracts/ERC20.sol +++ /dev/null @@ -1,49 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "./utils/Ownable.sol"; - -// File: openzeppelin-solidity/contracts/token/ERC20/CappedToken.sol - -/** - * @title Capped token - * @dev Mintable token with a token cap. - */ -contract CappedToken is ERC20, Ownable{ - - address public distributionContract; - - constructor( - string memory _name, - string memory _symbol, - uint256 _cap, address _distributionContract) public ERC20(_name, _symbol) { - _mint(_distributionContract, _cap); - } - -} - -contract OwnableERC20 is ERC20, Ownable { - uint8 private _decimals; - - constructor(string memory _name, string memory _symbol, uint8 decimals_, uint256 initialSupply) Ownable() ERC20(_name, _symbol) { - if (initialSupply > 0) { - _mint(_msgSender(), initialSupply); - } - - _decimals = decimals_; - } - - function mint(address receiver, uint256 amount) public onlyOwner { - _mint(receiver, amount); - } -} - -contract Token is OwnableERC20 { - - constructor( - string memory _name, - string memory _symbol, - uint256 _cap, - address _distributionContract) public OwnableERC20(_name, _symbol, 18, _cap) { - } -} diff --git a/contracts/ERC20LM.sol b/contracts/ERC20LM.sol deleted file mode 100644 index f1633f2f..00000000 --- a/contracts/ERC20LM.sol +++ /dev/null @@ -1,5 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "./utils/Ownable.sol"; - diff --git a/contracts/ERC20Test.sol b/contracts/ERC20Test.sol deleted file mode 100644 index 0043fcf9..00000000 --- a/contracts/ERC20Test.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity >=0.6.0; - -import "./ERC20.sol"; - -/** - * @title ERC20 test token contract - * @dev Mintable token with a token cap having msg.sender as distributionContract address. - */ -contract ERC20Test is Token { - - constructor( - string memory _name, - string memory _symbol, - uint256 _cap - ) public Token(_name, _symbol, _cap, msg.sender) { - } -} \ No newline at end of file diff --git a/contracts/IERC20Events.sol b/contracts/IERC20Events.sol deleted file mode 100644 index a84299a8..00000000 --- a/contracts/IERC20Events.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.0 <0.8.0; - -/** - * @dev Interface of the ERC20 standard as defined in the EIP, - * only the events to be included into other smart contract where - * their definition is required for transactions that throw them. - */ -interface IERC20events { - /** - * @dev Emitted when `value` tokens are moved from one account (`from`) to - * another (`to`). - * - * Note that `value` may be zero. - */ - event Transfer(address indexed from, address indexed to, uint256 value); - - /** - * @dev Emitted when the allowance of a `spender` for an `owner` is set by - * a call to {approve}. `value` is the new allowance. - */ - event Approval(address indexed owner, address indexed spender, uint256 value); -} \ No newline at end of file diff --git a/contracts/utils/Governed.sol b/contracts/access/Governed.sol similarity index 96% rename from contracts/utils/Governed.sol rename to contracts/access/Governed.sol index 20fe5b00..d4c34a35 100644 --- a/contracts/utils/Governed.sol +++ b/contracts/access/Governed.sol @@ -1,4 +1,4 @@ -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; /** @@ -16,7 +16,7 @@ contract Governed { * @dev The Ownable constructor sets the original `governor` of the contract to the sender * account. */ - constructor() public { + constructor() { _governor = msg.sender; } diff --git a/contracts/utils/Ownable.sol b/contracts/access/Ownable.sol similarity index 98% rename from contracts/utils/Ownable.sol rename to contracts/access/Ownable.sol index 02dae224..5a48fc65 100644 --- a/contracts/utils/Ownable.sol +++ b/contracts/access/Ownable.sol @@ -1,4 +1,4 @@ -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; /** * @title Ownable diff --git a/contracts/utils/ReentrancyGuardOptimized.sol b/contracts/access/ReentrancyGuardOptimized.sol similarity index 99% rename from contracts/utils/ReentrancyGuardOptimized.sol rename to contracts/access/ReentrancyGuardOptimized.sol index da7ecd74..7b548721 100644 --- a/contracts/utils/ReentrancyGuardOptimized.sol +++ b/contracts/access/ReentrancyGuardOptimized.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity >=0.6.0 <0.8.0; +pragma solidity >=0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. diff --git a/contracts/bepro/INetworkV2.sol b/contracts/bepro/INetworkV2.sol index 834d8d28..7aec0b51 100644 --- a/contracts/bepro/INetworkV2.sol +++ b/contracts/bepro/INetworkV2.sol @@ -1,6 +1,7 @@ +pragma solidity >=0.8.0; pragma abicoder v2; -import "./BountyToken.sol"; +import "./token/ERC721/BountyToken.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "./NetworkRegistry.sol"; diff --git a/contracts/bepro/Network.sol b/contracts/bepro/Network.sol deleted file mode 100644 index a804b48f..00000000 --- a/contracts/bepro/Network.sol +++ /dev/null @@ -1,417 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/utils/Pausable.sol"; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "../utils/Governed.sol"; - -/** - * @dev Interface of the ERC20 standard + mint & burn - */ -interface _IERC20 is IERC20 { - - /** - * @dev Mint Function - */ - function mint(address account, uint256 amount) external; - - /** - * @dev Burn Function - */ - function burn(address account, uint256 amount) external; - - function decimals() external returns (uint256); -} - - -/** - * @title Development Network Contract Autonomous Use - */ -contract Network is Pausable, Governed, ReentrancyGuard{ - using SafeMath for uint256; - - _IERC20 public settlerToken; - _IERC20 public transactionToken; - - uint256 constant private year = 365 days; - uint256 public incrementIssueID = 1; - uint256 public closedIdsCount = 0; - uint256 public totalStaked = 0; - uint256 public mergeCreatorFeeShare = 3; // (%) - Share to go to the merge proposal creator - uint256 public percentageNeededForDispute = 3; // (%) - Amount needed to approve a PR and distribute the rewards - uint256 public disputableTime = 3 days; - uint256 public redeemTime = 1 days; - uint256 public oraclesStaked = 0; - - uint256 public COUNCIL_AMOUNT = 25000000*10**18; // 25M - - mapping(uint256 => Issue) public issues; /* Distribution object */ - mapping(string => uint256) public issuesCIDtoID; /* Distribution object */ - mapping(address => uint256[]) public myIssues; /* Address Based Subcription */ - - mapping(address => Oracler) public oraclers; - address[] public oraclersArray; - - - struct MergeProposal { - uint256 _id; - uint256 creationDate; - //mapping(address => uint256) disputesForMergeByAddress; // Address -> oracles for that merge - uint256 oracles; // Amount of oracles set - uint256 disputes; // Amount of oracles set - address[] prAddresses; - uint256[] prAmounts; - address proposalAddress; - } - - // issueId - Merge Proposal Id - Address - oracles for that merge - mapping(uint256 => mapping(uint256 => mapping(address => uint256))) public disputesForMergeByAddress; - - struct Issue { - uint256 _id; - string cid; - uint256 creationDate; - uint256 tokensStaked; - address issueGenerator; - //mapping(uint256 => MergeProposal) mergeProposals; // Id -> Merge Proposal - uint256 mergeIDIncrement; - bool finalized; - bool recognizedAsFinished; - bool canceled; - } - - // issueId - Merge Proposal Id - Merge Proposal - mapping(uint256 => mapping(uint256 => MergeProposal)) mergeProposals; - - struct Oracler { - uint256 oraclesDelegatedByOthers; - mapping(address => uint256) oraclesDelegated; - address[] delegatedOraclesAddresses; - uint256 tokensLocked; - } - - event OpenIssue(uint256 indexed id, address indexed opener, uint256 indexed amount); - event RedeemIssue(uint256 indexed id); - event MergeProposalCreated(uint256 indexed id, uint256 indexed mergeID, address indexed creator); - event DisputeMerge(uint256 indexed id, uint256 indexed mergeID, uint256 oracles, address indexed disputer); - event CloseIssue(uint256 indexed id, uint256 indexed mergeID); - event RecognizedAsFinished(uint256 indexed id); - - constructor(address _settlerToken, address _transactionToken, address _governor) public { - settlerToken = _IERC20(_settlerToken); - transactionToken = _IERC20(_transactionToken); - _governor = _governor; - } - - function lock(uint256 _tokenAmount) external { - require(_tokenAmount > 0, "Token Amount has to be higher than 0"); - require(settlerToken.transferFrom(msg.sender, address(this), _tokenAmount), "Needs Allowance"); - - if(oraclers[msg.sender].tokensLocked != 0){ - // Exists - oraclers[msg.sender].oraclesDelegated[msg.sender] = oraclers[msg.sender].oraclesDelegated[msg.sender].add(_tokenAmount); - oraclers[msg.sender].tokensLocked = oraclers[msg.sender].tokensLocked.add(_tokenAmount); - }else{ - // Does not exist - Oracler storage oracler = oraclers[msg.sender]; - oracler.tokensLocked = _tokenAmount; - oracler.delegatedOraclesAddresses = [msg.sender]; - oracler.oraclesDelegated[msg.sender] = _tokenAmount; - oraclersArray.push(msg.sender); - } - - oraclesStaked = oraclesStaked.add(_tokenAmount); - } - - function unlock(uint256 _tokenAmount, address _from) external nonReentrant{ - Oracler storage oracler = oraclers[msg.sender]; - require(oracler.tokensLocked >= _tokenAmount, "Has to have tokens to unlock"); - require(oracler.oraclesDelegated[_from] >= _tokenAmount, "From has to have enough tokens to unlock"); - - oraclers[msg.sender].tokensLocked = oracler.tokensLocked.sub(_tokenAmount); - oraclers[msg.sender].oraclesDelegated[_from] = oracler.oraclesDelegated[_from].sub(_tokenAmount); - - if(msg.sender != _from){ - oraclers[_from].oraclesDelegatedByOthers = oraclers[_from].oraclesDelegatedByOthers.sub(_tokenAmount); - } - - oraclesStaked = oraclesStaked.sub(_tokenAmount); - require(settlerToken.transfer(msg.sender, _tokenAmount), "Transfer didnt work"); - } - - function delegateOracles(uint256 _tokenAmount, address _delegatedTo) external { - Oracler storage oracler = oraclers[msg.sender]; - - require(_delegatedTo != address(0), "Cannot transfer to the zero address"); - require(_delegatedTo != msg.sender, "Cannot transfer to itself"); - - require(oracler.tokensLocked >= _tokenAmount, "Has to have tokens to unlock"); - require(oracler.oraclesDelegated[msg.sender] >= _tokenAmount, "From has to have tokens to use to delegate"); - - oraclers[msg.sender].oraclesDelegated[msg.sender] = oracler.oraclesDelegated[msg.sender].sub(_tokenAmount); - oraclers[msg.sender].delegatedOraclesAddresses.push(_delegatedTo); - oraclers[msg.sender].oraclesDelegated[_delegatedTo] = oracler.oraclesDelegated[_delegatedTo].add(_tokenAmount); - //require(oraclers[_delegatedTo].tokensLocked != uint256(0), "Delegated to has to have oracled already"); - oraclers[_delegatedTo].oraclesDelegatedByOthers = oraclers[_delegatedTo].oraclesDelegatedByOthers.add(_tokenAmount); - } - - function disputeMerge(uint256 _issueID, uint256 _mergeID) external { - Issue memory issue = issues[_issueID]; - MergeProposal storage merge = mergeProposals[_issueID][_mergeID]; - require(issue._id != 0, "Issue does not exist"); - require(issue.mergeIDIncrement > _mergeID, "Merge Proposal does not exist"); - require(disputesForMergeByAddress[_issueID][_mergeID][msg.sender] == 0, "Has already oracled"); - - uint256 oraclesToAdd = getOraclesByAddress(msg.sender); - - mergeProposals[_issueID][_mergeID].disputes = merge.disputes.add(oraclesToAdd); - disputesForMergeByAddress[_issueID][_mergeID][msg.sender] = oraclesToAdd; - - emit DisputeMerge(_issueID, _mergeID, oraclesToAdd, msg.sender); - } - - function isIssueInDraft(uint256 _issueID) public view returns (bool){ - // Only if in the open window - require(issues[_issueID].creationDate != 0, "Issue does not exist"); - return (block.timestamp <= issues[_issueID].creationDate.add(redeemTime)); - } - - function isMergeInDraft(uint256 _issueID, uint256 _mergeID) public returns (bool) { - require(issues[_issueID].creationDate != 0, "Issue does not exist"); - require(mergeProposals[_issueID][_mergeID].proposalAddress != address(0), "Merge does not exist"); - return (block.timestamp <= mergeProposals[_issueID][_mergeID].creationDate.add(disputableTime)); - } - - function isMergeDisputed(uint256 _issueID, uint256 _mergeID) public returns (bool) { - require(issues[_issueID].creationDate != 0, "Issue does not exist"); - require(mergeProposals[_issueID][_mergeID].proposalAddress != address(0), "Merge does not exist"); - return (mergeProposals[_issueID][_mergeID].disputes >= oraclesStaked.mul(percentageNeededForDispute).div(100)); - } - - /** - * @dev open an Issue with transaction Tokens owned - * 1st step - */ - function openIssue(string calldata _cid, uint256 _tokenAmount) external whenNotPaused { - // Open Issue - Issue memory issue; - issue._id = incrementIssueID; - issue.cid = _cid; - issue.tokensStaked = _tokenAmount; - issue.issueGenerator = msg.sender; - issue.creationDate = block.timestamp; - issue.finalized = false; - issues[incrementIssueID] = issue; - issuesCIDtoID[_cid] = incrementIssueID; - - myIssues[msg.sender].push(incrementIssueID); - totalStaked = totalStaked.add(_tokenAmount); - incrementIssueID = incrementIssueID + 1; - // Transfer Transaction Token - require(transactionToken.transferFrom(msg.sender, address(this), _tokenAmount), "Needs Allowance"); - - emit OpenIssue(issue._id, msg.sender, _tokenAmount); - } - - function recognizeAsFinished(uint256 _issueId) external whenNotPaused { - Issue storage issue = issues[_issueId]; - require(issue.issueGenerator == msg.sender, "Has to be the issue creator"); - require(!isIssueInDraft(_issueId), "Draft Issue Time has already passed"); - require(!issue.finalized, "Issue was already finalized"); - require(!issue.canceled, "Issue was already canceled"); - - issues[_issueId].recognizedAsFinished = true; - - emit RecognizedAsFinished(_issueId); - } - - function redeemIssue(uint256 _issueId) external whenNotPaused { - Issue storage issue = issues[_issueId]; - require(issue.issueGenerator == msg.sender, "Has to be the issue creator"); - require(isIssueInDraft(_issueId), "Draft Issue Time has already passed"); - require(!issue.finalized, "Issue was already finalized"); - require(!issue.canceled, "Issue was already canceled"); - - issues[_issueId].finalized = true; - issues[_issueId].canceled = true; - require(transactionToken.transfer(msg.sender, issue.tokensStaked), "Transfer not sucessful"); - - emit RedeemIssue(_issueId); - } - - /** - * @dev update an Issue with transaction tokens owned - * 2nd step (optional) - */ - function updateIssue(uint256 _issueId, uint256 _newTokenAmount) external whenNotPaused { - require(issues[_issueId].tokensStaked != 0, "Issue has to exist"); - require(issues[_issueId].issueGenerator == msg.sender, "Has to be the issue creator"); - require(!issues[_issueId].finalized, "Issue was already finalized"); - require(!issues[_issueId].canceled, "Issue was already canceled"); - require(isIssueInDraft(_issueId), "Draft Issue Time has already passed"); - - uint256 previousAmount = issues[_issueId].tokensStaked; - // Update Issue - issues[_issueId].tokensStaked = _newTokenAmount; - // Lock Transaction Tokens - if(_newTokenAmount > previousAmount){ - require(transactionToken.transferFrom(msg.sender, address(this), _newTokenAmount.sub(previousAmount)), "Needs Allowance"); - totalStaked = totalStaked.add(_newTokenAmount.sub(previousAmount)); - }else{ - totalStaked = totalStaked.sub(previousAmount.sub(_newTokenAmount)); - require(transactionToken.transfer(msg.sender, previousAmount.sub(_newTokenAmount)), "Transfer not sucessful"); - } - } - - /** - * @dev Owner finalizes the issue and distributes the transaction tokens or rejects the PR - * @param _issueID issue id (mapping with github) - * @param _prAddresses PR Address - * @param _prAmounts PR Amounts - */ - function proposeIssueMerge(uint256 _issueID, address[] calldata _prAddresses, uint256[] calldata _prAmounts) external whenNotPaused { - - Issue memory issue = issues[_issueID]; - require(issue._id != 0 , "Issue has to exist"); - require(issue.finalized == false, "Issue has to be opened"); - require(_prAmounts.length == _prAddresses.length, "Amounts has to equal addresses length"); - - uint256 oracles = getOraclesByAddress(msg.sender); - - require(oracles >= COUNCIL_AMOUNT, "To propose merges the proposer has to be a Council (COUNCIL_AMOUNT)"); - - MergeProposal memory mergeProposal; - mergeProposal._id = issue.mergeIDIncrement; - mergeProposal.prAmounts = _prAmounts; - mergeProposal.prAddresses = _prAddresses; - mergeProposal.proposalAddress = msg.sender; - - uint256 total = ((issues[_issueID].tokensStaked * (mergeCreatorFeeShare)) / 100); // Fee + Merge Creator Fee + 0 - - for(uint i = 0; i < _prAddresses.length; i++){ - total = total.add((_prAmounts[i] * (100-mergeCreatorFeeShare)) / 100); - } - - require(total == issues[_issueID].tokensStaked, "PrAmounts & TokensStaked dont match"); - - mergeProposals[_issueID][issue.mergeIDIncrement] = mergeProposal; - issues[_issueID].mergeIDIncrement = issues[_issueID].mergeIDIncrement + 1; - emit MergeProposalCreated(_issueID, mergeProposal._id, msg.sender); - } - - - /** - * @dev Owner finalizes the issue and distributes the transaction tokens or rejects the PR - * @param _issueID issue id (mapping with github) - * @param _mergeID merge id - */ - function closeIssue(uint256 _issueID, uint256 _mergeID) external whenNotPaused { - Issue memory issue = issues[_issueID]; - require(issue._id != 0 , "Issue has to exist"); - require(issue.finalized == false, "Issue has to be opened"); - require(issue.recognizedAsFinished, "Issue has to be recognized as finished by the creator or by the disputers"); - require(issue.mergeIDIncrement > _mergeID, "Merge Proposal does not exist"); - require(!isIssueInDraft(_issueID), "Issue cant be in Draft Mode"); - require(!isMergeInDraft(_issueID, _mergeID), "Merge cant be in Draft Mode"); - require(!isMergeDisputed(_issueID, _mergeID), "Merge has been disputed"); - - // Closes the issue - issues[_issueID].finalized = true; - MergeProposal memory merge = mergeProposals[_issueID][_mergeID]; - - // Merge Creator Transfer - require(transactionToken.transfer(merge.proposalAddress, (issues[_issueID].tokensStaked * mergeCreatorFeeShare) / 100), "Has to transfer"); - - // Generate Transaction Tokens - for(uint i = 0; i < merge.prAddresses.length; i++){ - myIssues[merge.prAddresses[i]].push(_issueID); - require(transactionToken.transfer(merge.prAddresses[i], (merge.prAmounts[i] * (100-mergeCreatorFeeShare)) / 100), "Has to transfer"); - } - - closedIdsCount = closedIdsCount.add(1); - totalStaked = totalStaked.sub(issue.tokensStaked); - emit CloseIssue(_issueID, _mergeID); - } - - function getIssuesByAddress(address _address) public returns (uint256[] memory){ - return myIssues[_address]; - } - - function getOraclesByAddress(address _address) public returns (uint256){ - Oracler storage oracler = oraclers[_address]; - return oracler.oraclesDelegatedByOthers.add(oracler.oraclesDelegated[_address]); - } - - function getOraclesSummary(address _address) public returns (uint256, uint256[] memory, address[] memory, uint256){ - Oracler storage oracler = oraclers[_address]; - - uint256[] memory amounts = new uint256[](oracler.delegatedOraclesAddresses.length); - address[] memory addresses = new address[](oracler.delegatedOraclesAddresses.length); - - for(uint i=0; i < oracler.delegatedOraclesAddresses.length; i++){ - addresses[i] = (oracler.delegatedOraclesAddresses[i]); - amounts[i] = (oracler.oraclesDelegated[oracler.delegatedOraclesAddresses[i]]); - } - - return (oracler.oraclesDelegatedByOthers, amounts, addresses, oracler.tokensLocked); - } - - function getIssueByCID(string memory _issueCID) public returns (uint256, string memory, uint256, uint256, address, uint256, bool, bool, bool){ - Issue memory issue = issues[issuesCIDtoID[_issueCID]]; - return (issue._id, issue.cid, issue.creationDate, issue.tokensStaked, issue.issueGenerator, issue.mergeIDIncrement, issue.finalized, issue.canceled, issue.recognizedAsFinished); - } - - function getIssueById(uint256 _issueID) public returns (uint256, string memory, uint256, uint256, address, uint256, bool, bool, bool){ - Issue memory issue = issues[_issueID]; - return (issue._id, issue.cid, issue.creationDate, issue.tokensStaked, issue.issueGenerator, issue.mergeIDIncrement, issue.finalized, issue.canceled, issue.recognizedAsFinished); - } - - function getMergeById(uint256 _issueID, uint256 _mergeId) public returns (uint256, uint256, uint256, address[] memory, uint256[] memory, address){ - MergeProposal memory merge = mergeProposals[_issueID][_mergeId]; - return (merge._id, merge.oracles, merge.disputes, merge.prAddresses, merge.prAmounts, merge.proposalAddress); - } - - /** - * @dev Change Merge Creator FeeShare - */ - function changeMergeCreatorFeeShare(uint256 _mergeCreatorFeeShare) external onlyGovernor { - require(_mergeCreatorFeeShare < 20, "Merge Share can't be higher than 20"); - mergeCreatorFeeShare = _mergeCreatorFeeShare; - } - - /** - * @dev changePercentageNeededForDispute - */ - function changePercentageNeededForDispute(uint256 _percentageNeededForDispute) external onlyGovernor { - require(_percentageNeededForDispute < 15, "Dispute % Needed can't be higher than 15"); - percentageNeededForDispute = _percentageNeededForDispute; - } - - /** - * @dev changedisputableTime - */ - function changeDisputableTime(uint256 _disputableTime) external onlyGovernor { - require(_disputableTime < 20 days, "Time has to be lower than 20 days"); - require(_disputableTime >= 1 minutes, "Time has to be higher than 1 minutes"); - disputableTime = _disputableTime; - } - - /** - * @dev changeRedeemTime - */ - function changeRedeemTime(uint256 _redeemTime) external onlyGovernor { - require(_redeemTime < 20 days, "Time has to be lower than 20 days"); - require(_redeemTime >= 1 minutes, "Time has to be higher than 1 minutes"); - redeemTime = _redeemTime; - } - - /** - * @dev changeTimeOpenForIssueApprove - */ - function changeCOUNCIL_AMOUNT(uint256 _COUNCIL_AMOUNT) external onlyGovernor { - require(_COUNCIL_AMOUNT > 100000*10**settlerToken.decimals(), "Council Amount has to higher than 100k"); - require(_COUNCIL_AMOUNT < 50000000*10**settlerToken.decimals(), "Council Amount has to lower than 50M"); - COUNCIL_AMOUNT = _COUNCIL_AMOUNT; - } -} - diff --git a/contracts/bepro/NetworkFactory.sol b/contracts/bepro/NetworkFactory.sol deleted file mode 100644 index f50e52d3..00000000 --- a/contracts/bepro/NetworkFactory.sol +++ /dev/null @@ -1,102 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "./Network.sol"; - - - -/// @title Development Network Contract Factory -contract NetworkFactory is ReentrancyGuard { - using SafeMath for uint256; - - ERC20 public beproAddress; /* BEPRO ERC20 */ - uint256 public OPERATOR_AMOUNT = 1000000*10**18; // +1M - uint256 public tokensLockedTotal = 0; - uint256 public networksAmount = 0; - - mapping(address => uint256) public tokensLocked; /* Tokens Locked */ - mapping(uint256 => address) public networks; /* Distribution Network Object Address */ - mapping(address => address) public networksByAddress; /* Distribution Network Object Address, user address to network address mapping */ - - Network[] public networksArray; /* Array of Networks */ - - /// @notice Network created event - /// @param id New created Network id - /// @param opener User address that created the Network - /// @param amount BEPRO token amount locked for creating the Network - event CreatedNetwork(uint256 indexed id, address indexed opener, uint256 indexed amount); - - - - /// @notice constructor - /// @param _beproAddress BEPRO token address - constructor(ERC20 _beproAddress) public { - beproAddress = _beproAddress; - } - - /// @notice user locks required amount of BEPRO tokens to create the Network, - /// user needs to approve this contract to transferFrom BEPRO tokens on his behalf - /// @param _tokenAmount BEPRO token amount - function lock(uint256 _tokenAmount) external { - require(_tokenAmount > 0, "Token Amount needs to be higher than 0"); - require(beproAddress.transferFrom(msg.sender, address(this), _tokenAmount), "Needs Allowance"); - - tokensLocked[msg.sender] = tokensLocked[msg.sender].add(_tokenAmount); - tokensLockedTotal = tokensLockedTotal.add(_tokenAmount); - } - - /// @notice user creates Network, only one Network is allowed per user at a time - /// @param _settlerToken Settler token address - /// @param _transactionToken Transactional token address - function createNetwork(address _settlerToken, address _transactionToken) external payable { - - require(networksByAddress[msg.sender] == address(0), "Only one Network per user at a time"); - require(tokensLocked[msg.sender] >= OPERATOR_AMOUNT, "Operator has to lock +1M BEPRO to fork the Network"); - - Network network = new Network(_settlerToken, _transactionToken, msg.sender); - network.proposeGovernor(msg.sender); - networksArray.push(network); - networks[networksAmount] = address(network); - networksByAddress[msg.sender] = address(network); - emit CreatedNetwork(networksAmount, msg.sender, tokensLocked[msg.sender]); - networksAmount = networksAmount.add(1); - } - - /// @notice user unlocks his BEPRO tokens - function unlock() external nonReentrant { - uint256 amount = tokensLocked[msg.sender]; - require(amount > 0, "Needs to have tokens locked"); - - if (networksByAddress[msg.sender] != address(0)) { - require(Network(networksByAddress[msg.sender]).oraclesStaked() == 0, "Network has to have 0 Settler Tokens"); - require(Network(networksByAddress[msg.sender]).totalStaked() == 0, "Network has to have 0 Transactional Tokens"); - networksByAddress[msg.sender] = address(0); - } - - tokensLockedTotal = tokensLockedTotal.sub(amount); - tokensLocked[msg.sender] = 0; - require(beproAddress.transfer(msg.sender, amount), "TF"); //TF = transfer failed - } - - /// @notice Get user's BEPRO tokens locked - /// @param _address User address - /// @return user's BEPRO tokens locked - function getTokensLocked(address _address) external view returns (uint256) { - return tokensLocked[_address]; - } - - /// @notice Get Network address given position in networks array - /// @param _id Network id in the networks array - /// @return Network address - function getNetworkById(uint256 _id) external view returns (address) { - return networks[_id]; - } - - /// @notice Get Network address given user address that created it - /// @param _address User address - /// @return Network address - function getNetworkByAddress(address _address) external view returns (address) { - return networksByAddress[_address]; - } -} diff --git a/contracts/bepro/NetworkRegistry.sol b/contracts/bepro/NetworkRegistry.sol index ab2a27fb..1221a0b3 100644 --- a/contracts/bepro/NetworkRegistry.sol +++ b/contracts/bepro/NetworkRegistry.sol @@ -1,14 +1,14 @@ -pragma solidity >=0.6.0 <=8.0.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/math/SafeMath.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/utils/EnumerableSet.sol"; +import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import "./INetworkV2.sol"; -import "../utils/Governed.sol"; -import "./BountyToken.sol"; +import "../access/Governed.sol"; +import "./token/ERC721/BountyToken.sol"; /* * The NetworkRegistry acts as a registry for @INetworkV2, allowing registering and closing of new networks, by using @@ -18,7 +18,7 @@ import "./BountyToken.sol"; */ contract NetworkRegistry is ReentrancyGuard, Governed { - using SafeMath for uint256; + using Math for uint256; using EnumerableSet for EnumerableSet.AddressSet; uint256 constant MAX_PERCENT = 100000000; @@ -69,7 +69,7 @@ contract NetworkRegistry is ReentrancyGuard, Governed { uint256 _networkCreationFeePercentage, uint256 _closeFeePercentage, uint256 _cancelFeePercentage, - address _bountyToken) ReentrancyGuard() Governed() { + address _bountyToken) public ReentrancyGuard() Governed() { _closeAndCancelFeesLimits(_cancelFeePercentage, _closeFeePercentage); _networkCreationFeeLimits(_networkCreationFeePercentage); @@ -100,8 +100,8 @@ contract NetworkRegistry is ReentrancyGuard, Governed { require(_amount > 0, "L0"); require(erc20.transferFrom(msg.sender, address(this), _amount), "L1"); - lockedTokensOfAddress[msg.sender] = lockedTokensOfAddress[msg.sender].add(_amount); - totalLockedAmount = totalLockedAmount.add(_amount); + lockedTokensOfAddress[msg.sender] = lockedTokensOfAddress[msg.sender] + _amount; + totalLockedAmount = totalLockedAmount + _amount; emit UserLockedAmountChanged(msg.sender, lockedTokensOfAddress[msg.sender]); } @@ -112,16 +112,15 @@ contract NetworkRegistry is ReentrancyGuard, Governed { * user must have tokens to unlock * - if user has a network * TVL of network must be zero - * All bounties must be closed or canceled * transfer is successful */ - function unlock() nonReentrant external { + function unlock() nonReentrant public { require(lockedTokensOfAddress[msg.sender] > 0, "UL0"); if (networkOfAddress[msg.sender] != address(0)) { INetworkV2 network = INetworkV2(networkOfAddress[msg.sender]); require(network.totalNetworkToken() == 0, "UL1"); - require((network.closedBounties() + network.canceledBounties()) == network.bountiesIndex(), "UL2"); + //require((network.closedBounties() + network.canceledBounties()) == network.bountiesIndex(), "UL2"); address closedNetworkAddress = networkOfAddress[msg.sender]; openNetworks[closedNetworkAddress] = false; @@ -132,7 +131,9 @@ contract NetworkRegistry is ReentrancyGuard, Governed { require(erc20.transfer(msg.sender, lockedTokensOfAddress[msg.sender]), "UL3"); - totalLockedAmount = totalLockedAmount.sub(lockedTokensOfAddress[msg.sender]); + (, uint256 newTotalLockedAmount) = totalLockedAmount.trySub(lockedTokensOfAddress[msg.sender]); + + totalLockedAmount = newTotalLockedAmount; lockedTokensOfAddress[msg.sender] = 0; emit UserLockedAmountChanged(msg.sender, lockedTokensOfAddress[msg.sender]); @@ -152,7 +153,7 @@ contract NetworkRegistry is ReentrancyGuard, Governed { */ function registerNetwork(address networkAddress) nonReentrant external { INetworkV2 network = INetworkV2(networkAddress); - uint256 fee = (lockAmountForNetworkCreation.mul(networkCreationFeePercentage)).div(MAX_PERCENT); + uint256 fee = lockAmountForNetworkCreation.mulDiv(networkCreationFeePercentage, MAX_PERCENT); require(networkOfAddress[msg.sender] == address(0), "R0"); require(lockedTokensOfAddress[msg.sender] >= lockAmountForNetworkCreation, "R1"); @@ -160,14 +161,20 @@ contract NetworkRegistry is ReentrancyGuard, Governed { require(address(network.registry()) == address(this), "R4"); if (treasury != address(0)) { + (, uint256 newTotalLockedAmount) = totalLockedAmount.trySub(fee); + totalLockedAmount = newTotalLockedAmount; + require(erc20.transfer(treasury, fee), "R3"); - totalLockedAmount = totalLockedAmount.sub(fee); } networksArray.push(network); openNetworks[networkAddress] = true; networkOfAddress[msg.sender] = networkAddress; - lockedTokensOfAddress[msg.sender] = lockedTokensOfAddress[msg.sender].sub(fee); + + (, uint256 newUserLockedAmount) = lockedTokensOfAddress[msg.sender].trySub(fee); + + lockedTokensOfAddress[msg.sender] = newUserLockedAmount; + emit NetworkRegistered(networkAddress, msg.sender, networksArray.length - 1); } @@ -202,7 +209,8 @@ contract NetworkRegistry is ReentrancyGuard, Governed { EnumerableSet.AddressSet storage pointer = transactional ? _transactionalTokens : _rewardTokens; uint256 len = _erc20Addresses.length; - require(len.add(pointer.length()) <= MAX_ALLOWED_TOKENS_LEN, "AT0"); + (, uint256 tokensLength) = len.tryAdd(pointer.length()); + require(tokensLength <= MAX_ALLOWED_TOKENS_LEN, "AT0"); for (uint256 z = 0; z < len; z++) { require(pointer.add(_erc20Addresses[z]) == true, "AT1"); diff --git a/contracts/bepro/NetworkV2.sol b/contracts/bepro/NetworkV2.sol index 700cbf8c..e79ebd3f 100644 --- a/contracts/bepro/NetworkV2.sol +++ b/contracts/bepro/NetworkV2.sol @@ -1,12 +1,12 @@ -pragma solidity >=0.6.0 <=8.0.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; -import "../utils/Governed.sol"; -import "./BountyToken.sol"; +import "../access/Governed.sol"; +import "./token/ERC721/BountyToken.sol"; import "./INetworkV2.sol"; import "./NetworkRegistry.sol"; @@ -16,26 +16,7 @@ import "./NetworkRegistry.sol"; * funds upon completion */ contract NetworkV2 is Governed, ReentrancyGuard { - using SafeMath for uint256; - - uint256 constant MAX_PERCENT = 100000000; - - uint256 constant MAX_MERGE_CREATOR_FEE_SHARE = 10000000; - uint256 constant MAX_PROPOSER_FEE_SHARE = 10000000; - uint256 constant MAX_PERCENTAGE_NEEDED_FOR_DISPUTE = 51000000; - - uint256 constant MAX_DISPUTABLE_TIME = 20 days; - uint256 constant MIN_DISPUTABLE_TIME = 1 minutes; - - uint256 constant MAX_DRAFT_TIME = 20 days; - uint256 constant MIN_DRAFT_TIME = 1 minutes; - - uint256 constant MIN_CANCELABLE_TIME = 180 days; - - uint256 constant MAX_COUNCIL_AMOUNT = 100000000000; // 100B - uint256 constant MIN_COUNCIL_AMOUNT = 1; - - uint256 constant MAX_CONTRIBUTORS_LENGTH = 20; + using Math for uint256; uint256 public DIVISOR = 1000000; // public because userland uses this to convert values to send @@ -48,9 +29,6 @@ contract NetworkV2 is Governed, ReentrancyGuard { uint256 public oracleExchangeRate = 1000000; // 1:1 uint256 public oraclesDistributed = 0; // essentially, the converted math of TVL - uint256 public closedBounties = 0; - uint256 public canceledBounties = 0; - uint256 public mergeCreatorFeeShare = 50000; // 0.05% uint256 public proposerFeeShare = 2000000; // 2% uint256 public percentageNeededForDispute = 3000000; // 3% @@ -63,7 +41,7 @@ contract NetworkV2 is Governed, ReentrancyGuard { uint256 public bountiesIndex = 0; mapping(uint256 => INetworkV2.Bounty) bounties; - mapping(address => uint256[]) bountiesOfAddress; +// mapping(address => uint256[]) bountiesOfAddress; mapping(string => uint256) public cidBountyId; mapping(address => INetworkV2.Oracle) public oracles; mapping(address => INetworkV2.Delegation[]) delegations; @@ -80,17 +58,15 @@ contract NetworkV2 is Governed, ReentrancyGuard { event BountyProposalDisputed(uint256 indexed bountyId, uint256 prId, uint256 proposalId, uint256 weight, bool overflow); event BountyProposalRefused(uint256 indexed bountyId, uint256 prId, uint256 proposalId); event BountyAmountUpdated(uint256 indexed id, uint256 amount); - event NetworkParamChanged (uint256 param, uint256 newvalue, uint256 oldvalue); + event NetworkParamChanged (uint256 param, uint256 newvalue); event OraclesChanged(address indexed actor, int256 indexed actionAmount, uint256 indexed newLockedTotal); event OraclesTransfer(address indexed from, address indexed to, uint256 indexed amount); - constructor(address _networkToken, address _registry) Governed() ReentrancyGuard() { + constructor(address _networkToken, address _registry) public Governed() ReentrancyGuard() { networkToken = ERC20(_networkToken); registry = NetworkRegistry(_registry); } - - function _isBountyOwner(uint256 id) internal view { require(bounties[id].creator == msg.sender, "1"); } @@ -109,7 +85,7 @@ contract NetworkV2 is Governed, ReentrancyGuard { function _isInDraft(uint256 id, bool shouldBe) internal view { _bountyExists(id); - require((block.timestamp < bounties[id].creationDate.add(draftTime)) == shouldBe, "1"); + require((block.timestamp < bounties[id].creationDate + draftTime) == shouldBe, "1"); } function _isNotCanceled(uint256 id) internal view { @@ -124,11 +100,6 @@ contract NetworkV2 is Governed, ReentrancyGuard { require(_proposalId <= bounties[_bountyId].proposals.length - 1, "0"); } - function _lessThan20MoreThan1(uint256 value) internal pure { - require(value <= 20 days, "1"); - require(value >= 1 minutes, "2"); - } - function _amountGT0(uint256 _amount) internal pure { require(_amount > 0, "0"); } @@ -148,8 +119,6 @@ contract NetworkV2 is Governed, ReentrancyGuard { bounty.canceled = true; - canceledBounties = canceledBounties.add(1); - if (bounty.rewardAmount > 0) { require(ERC20(bounty.rewardToken).transfer(msg.sender, bounty.rewardAmount), "5"); } @@ -165,22 +134,24 @@ contract NetworkV2 is Governed, ReentrancyGuard { uint256 returnAmount = bounty.tokenAmount; if (address(registry) != address(0)) { - if (registry.treasury() != address(0)) { + if (registry.treasury() != address(0) && registry.cancelFeePercentage() > 0) { uint256 treasuryFee = _toPercent(bounty.tokenAmount, registry.cancelFeePercentage()); - returnAmount = returnAmount.sub(treasuryFee); + returnAmount = returnAmount - treasuryFee; require(erc20.transfer(registry.treasury(), treasuryFee), "3"); } } require(erc20.transfer(bounty.creator, returnAmount), "2"); - canceledBounties = canceledBounties.add(1); - emit BountyCanceled(id); } function _toPercent(uint256 a, uint256 b) internal pure returns (uint256) { - return (a.mul(b)).div(MAX_PERCENT); + return a.mulDiv(b, 100000000); + } + + function _senderWeight() internal view returns (uint256) { + return oracles[msg.sender].locked + oracles[msg.sender].byOthers; } function getBounty(uint256 id) external view returns (INetworkV2.Bounty memory) { @@ -191,15 +162,15 @@ contract NetworkV2 is Governed, ReentrancyGuard { return delegations[_address]; } - function getBountiesOfAddress(address owner) external view returns (uint256[] memory) { - return bountiesOfAddress[owner]; - } +// function getBountiesOfAddress(address owner) external view returns (uint256[] memory) { +// return bountiesOfAddress[owner]; +// } - function treasuryInfo() external view returns(address, uint256, uint256) { - if (address(registry) != address(0)) - return (registry.treasury(), registry.closeFeePercentage(), registry.cancelFeePercentage()); - return (address(0), 0, 0); - } +// function treasuryInfo() external view returns(address, uint256, uint256) { +// if (address(registry) != address(0)) +// return (registry.treasury(), registry.closeFeePercentage(), registry.cancelFeePercentage()); +// return (address(0), 0, 0); +// } /* * Enables a network Governor Change a network parameter @@ -231,43 +202,34 @@ contract NetworkV2 is Governed, ReentrancyGuard { * _value must be higher than @MIN_CANCELABLE_TIME */ function changeNetworkParameter(uint256 _parameter, uint256 _value) external onlyGovernor { - uint256 oldValue; if (_parameter == uint256(INetworkV2.Params.councilAmount)) { - require(_value >= MIN_COUNCIL_AMOUNT * 10 ** networkToken.decimals(), "1"); - require(_value <= MAX_COUNCIL_AMOUNT * 10 ** networkToken.decimals(), "2"); - oldValue = councilAmount; + require(_value >= 1 * 10 ** networkToken.decimals(), "1"); + require(_value <= 100000000000 * 10 ** networkToken.decimals(), "2"); councilAmount = _value; } else if (_parameter == uint256(INetworkV2.Params.draftTime)) { - require(_value >= MIN_DRAFT_TIME && _value <= MAX_DRAFT_TIME, "3"); - oldValue = draftTime; + require(_value >= 1 minutes && _value <= 20 days, "3"); draftTime = _value; } else if (_parameter == uint256(INetworkV2.Params.disputableTime)) { - require(_value >= MIN_DISPUTABLE_TIME && _value <= MAX_DISPUTABLE_TIME, "4"); - oldValue = disputableTime; + require(_value >= 1 minutes && _value <= 20 days, "4"); disputableTime = _value; } else if (_parameter == uint256(INetworkV2.Params.percentageNeededForDispute)) { - require(_value <= MAX_PERCENTAGE_NEEDED_FOR_DISPUTE, "5"); - oldValue = percentageNeededForDispute; + require(_value <= 51000000, "5"); percentageNeededForDispute = _value; } else if (_parameter == uint256(INetworkV2.Params.mergeCreatorFeeShare)) { - require(_value <= MAX_MERGE_CREATOR_FEE_SHARE, "6"); - oldValue = mergeCreatorFeeShare; + require(_value <= 10000000, "6"); mergeCreatorFeeShare = _value; } else if (_parameter == uint256(INetworkV2.Params.proposerFeeShare)) { - require(_value <= MAX_PROPOSER_FEE_SHARE); - oldValue = proposerFeeShare; + require(_value <= 10000000); proposerFeeShare = _value; } else if (_parameter == uint256(INetworkV2.Params.oracleExchangeRate)) { require(totalNetworkToken == 0, "1"); - oldValue = oracleExchangeRate; oracleExchangeRate = _value; } else if (_parameter == uint256(INetworkV2.Params.cancelableTime)) { - require(_value >= MIN_CANCELABLE_TIME, "3"); - oldValue = cancelableTime; + require(_value >= 180 days, "3"); cancelableTime = _value; } - emit NetworkParamChanged(_parameter, _value, oldValue); + emit NetworkParamChanged(_parameter, _value); } /* @@ -275,24 +237,34 @@ contract NetworkV2 is Governed, ReentrancyGuard { */ function manageOracles(bool lock, uint256 amount) nonReentrant external { _amountGT0(amount); - uint256 exchanged = 0; + + + + if (lock) { - exchanged = amount.mul(oracleExchangeRate.div(DIVISOR)); - oracles[msg.sender].locked = oracles[msg.sender].locked.add(exchanged); + uint256 exchanged = amount.mulDiv(oracleExchangeRate, DIVISOR); + (, uint256 newLocked) = oracles[msg.sender].locked.tryAdd(exchanged); + oracles[msg.sender].locked = newLocked; require(networkToken.transferFrom(msg.sender, address(this), amount), "0"); - totalNetworkToken = totalNetworkToken.add(amount); - oraclesDistributed = oraclesDistributed.add(exchanged); + (, uint256 newTotalNetworkToken) = totalNetworkToken.tryAdd(amount); + (, uint256 newOraclesDistributedValue) = oraclesDistributed.tryAdd(exchanged); + totalNetworkToken = newTotalNetworkToken; + oraclesDistributed = newOraclesDistributedValue; } else { - exchanged = amount.div(oracleExchangeRate.div(DIVISOR)); // We are unlocking POINTS not tokens + (, uint256 exchangeRate) = oracleExchangeRate.tryDiv(DIVISOR); + (, uint256 exchanged) = amount.tryDiv(exchangeRate); // We are unlocking POINTS not tokens require(amount <= oracles[msg.sender].locked, "1"); require(networkToken.transfer(msg.sender, exchanged), "2"); - oracles[msg.sender].locked = oracles[msg.sender].locked.sub(amount); - totalNetworkToken = totalNetworkToken.sub(exchanged); - oraclesDistributed = oraclesDistributed.sub(amount); - + (, uint256 newLocked) = oracles[msg.sender].locked.trySub(amount); + (, uint256 newTotalNetworkToken) = totalNetworkToken.trySub(exchanged); + (, uint256 newOraclesDistributed) = oraclesDistributed.trySub(amount); + oracles[msg.sender].locked = newLocked; + totalNetworkToken = newTotalNetworkToken; + oraclesDistributed = newOraclesDistributed; } - emit OraclesChanged(msg.sender, int256(lock ? amount : -amount), oracles[msg.sender].locked.add(oracles[msg.sender].byOthers)); + int256 _amount = int256(amount); + emit OraclesChanged(msg.sender, int256(lock ? _amount : -_amount), _senderWeight()); } /* @@ -301,11 +273,17 @@ contract NetworkV2 is Governed, ReentrancyGuard { function delegateOracles(uint256 amount, address toAddress) external { _amountGT0(amount); require(amount <= oracles[msg.sender].locked, "0"); - oracles[msg.sender].locked = oracles[msg.sender].locked.sub(amount); - oracles[msg.sender].toOthers = oracles[msg.sender].toOthers.add(amount); - oracles[toAddress].byOthers = oracles[toAddress].byOthers.add(amount); + (bool sLocked, uint256 locked) = oracles[msg.sender].locked.trySub(amount); + (bool sToOthers, uint256 toOthers) = oracles[msg.sender].toOthers.tryAdd(amount); + (bool sByOthers, uint256 byOthers) = oracles[toAddress].byOthers.tryAdd(amount); + + oracles[msg.sender].locked = locked; + oracles[msg.sender].toOthers = toOthers; + oracles[toAddress].byOthers = byOthers; delegations[msg.sender].push(INetworkV2.Delegation(msg.sender, toAddress, amount)); + require(sLocked && sToOthers && sByOthers, "1"); + emit OraclesTransfer(msg.sender, toAddress, amount); } @@ -316,11 +294,18 @@ contract NetworkV2 is Governed, ReentrancyGuard { _amountGT0(delegations[msg.sender][entryId].amount); uint256 amount = delegations[msg.sender][entryId].amount; address delegated = delegations[msg.sender][entryId].to; - oracles[msg.sender].locked = oracles[msg.sender].locked.add(amount); - oracles[msg.sender].toOthers = oracles[msg.sender].toOthers.sub(amount); - oracles[delegated].byOthers = oracles[delegated].byOthers.sub(amount); + + (bool sLocked, uint256 locked) = oracles[msg.sender].locked.tryAdd(amount); + (bool sToOthers, uint256 toOthers) = oracles[msg.sender].toOthers.trySub(amount); + (bool sByOthers, uint256 byOthers) = oracles[delegated].byOthers.trySub(amount); + + oracles[msg.sender].locked = locked; + oracles[msg.sender].toOthers = toOthers; + oracles[delegated].byOthers = byOthers; delegations[msg.sender][entryId].amount = 0; + require(sLocked && sToOthers && sByOthers, "TB1"); + emit OraclesTransfer(delegated, msg.sender, amount); } @@ -345,7 +330,7 @@ contract NetworkV2 is Governed, ReentrancyGuard { string memory branch, string memory githubUser ) nonReentrant external { - bountiesIndex = bountiesIndex.add(1); + bountiesIndex = bountiesIndex + 1; bounties[bountiesIndex].id = bountiesIndex; bounties[bountiesIndex].cid = cid; @@ -392,7 +377,7 @@ contract NetworkV2 is Governed, ReentrancyGuard { } cidBountyId[cid] = bounties[bountiesIndex].id; - bountiesOfAddress[msg.sender].push(bounties[bountiesIndex].id); +// bountiesOfAddress[msg.sender].push(bounties[bountiesIndex].id); emit BountyCreated(bounties[bountiesIndex].id, bounties[bountiesIndex].cid, msg.sender); } @@ -405,7 +390,8 @@ contract NetworkV2 is Governed, ReentrancyGuard { */ function hardCancel(uint256 id) nonReentrant onlyGovernor external { require(bounties[id].creator != address(0), "1"); - require(block.timestamp.sub(bounties[id].creationDate) >= cancelableTime, "3"); + (, uint256 timestamp) = block.timestamp.trySub(bounties[id].creationDate); + require(timestamp >= cancelableTime, "3"); if (bounties[id].proposals.length > 0) { for (uint256 i = 0; i <= bounties[id].proposals.length - 1; i++) { @@ -475,10 +461,10 @@ contract NetworkV2 is Governed, ReentrancyGuard { require(newTokenAmount > 0 && (bounty.tokenAmount != newTokenAmount) , "1"); if (newTokenAmount > bounty.tokenAmount) { - uint256 giveAmount = newTokenAmount.sub(bounty.tokenAmount); + (, uint256 giveAmount) = newTokenAmount.trySub(bounty.tokenAmount); require(erc20.transferFrom(msg.sender, address(this), giveAmount), "2"); } else { - uint256 retrieveAmount = bounty.tokenAmount.sub(newTokenAmount); + (, uint256 retrieveAmount) = bounty.tokenAmount.trySub(newTokenAmount); require(erc20.transfer(bounty.creator, retrieveAmount), "3"); } @@ -504,11 +490,11 @@ contract NetworkV2 is Governed, ReentrancyGuard { INetworkV2.Bounty storage bounty = bounties[id]; require(bounty.funded == false, "1"); require(bounty.tokenAmount < bounty.fundingAmount, "2"); - require(bounty.tokenAmount.add(fundingAmount) <= bounty.fundingAmount, "3"); + (, uint256 newTokenAmount) = bounty.tokenAmount.tryAdd(fundingAmount); + require(newTokenAmount <= bounty.fundingAmount, "3"); bounty.funding.push(INetworkV2.Benefactor(msg.sender, fundingAmount, block.timestamp)); - - bounty.tokenAmount = bounty.tokenAmount.add(fundingAmount); + bounty.tokenAmount = newTokenAmount; bounty.funded = bounty.fundingAmount == bounty.tokenAmount; require(ERC20(bounty.transactional).transferFrom(msg.sender, address(this), fundingAmount), "3"); @@ -538,11 +524,14 @@ contract NetworkV2 is Governed, ReentrancyGuard { _amountGT0(funding.amount); require(ERC20(bounty.transactional).transfer(msg.sender, funding.amount), "R3"); - bounty.tokenAmount = bounty.tokenAmount.sub(funding.amount); + bounty.tokenAmount = bounty.tokenAmount - funding.amount; funding.amount = 0; bounty.funded = bounty.tokenAmount == bounty.fundingAmount; - emit BountyFunded(id, bounty.funded, msg.sender, int256(bounty.tokenAmount - bounty.fundingAmount)); + unchecked { + int256 newAmount = int256(bounty.tokenAmount - bounty.fundingAmount); + emit BountyFunded(id, bounty.funded, msg.sender, newAmount); + } } /* @@ -579,6 +568,7 @@ contract NetworkV2 is Governed, ReentrancyGuard { pullRequest.originRepo = originRepo; pullRequest.originCID = originCID; pullRequest.creator = msg.sender; + pullRequest.ready = true; bounty.pullRequests.push(pullRequest); @@ -616,20 +606,20 @@ contract NetworkV2 is Governed, ReentrancyGuard { * PR creator must match sender * PR has to exist */ - function markPullRequestReadyForReview(uint256 bountyId, uint256 pullRequestId) external { - _isInDraft(bountyId, false); - _isNotCanceled(bountyId); - _isOpen(bountyId); - - require(pullRequestId <= bounties[bountyId].pullRequests.length - 1, "1"); - require(bounties[bountyId].pullRequests[pullRequestId].ready == false, "2"); - require(bounties[bountyId].pullRequests[pullRequestId].creator == msg.sender, "3"); - require(bounties[bountyId].pullRequests[pullRequestId].canceled == false, "4"); - - bounties[bountyId].pullRequests[pullRequestId].ready = true; - - emit BountyPullRequestReadyForReview(bountyId, pullRequestId); - } +// function markPullRequestReadyForReview(uint256 bountyId, uint256 pullRequestId) external { +// _isInDraft(bountyId, false); +// _isNotCanceled(bountyId); +// _isOpen(bountyId); +// +// require(pullRequestId <= bounties[bountyId].pullRequests.length - 1, "1"); +// require(bounties[bountyId].pullRequests[pullRequestId].ready == false, "2"); +// require(bounties[bountyId].pullRequests[pullRequestId].creator == msg.sender, "3"); +// require(bounties[bountyId].pullRequests[pullRequestId].canceled == false, "4"); +// +// bounties[bountyId].pullRequests[pullRequestId].ready = true; +// +// emit BountyPullRequestReadyForReview(bountyId, pullRequestId); +// } /* * Create a proposal entry by using a combination of a bounty id with a pr id that has been marked as ready @@ -651,11 +641,11 @@ contract NetworkV2 is Governed, ReentrancyGuard { _isOpen(id); _isNotCanceled(id); - require(oracles[msg.sender].locked.add(oracles[msg.sender].byOthers) >= councilAmount, "0"); + require(_senderWeight() >= councilAmount, "0"); require(prId <= bounties[id].pullRequests.length - 1, "0"); require(bounties[id].pullRequests[prId].ready == true, "1"); require(bounties[id].pullRequests[prId].canceled == false, "C2"); - require((recipients.length + percentages.length) <= MAX_CONTRIBUTORS_LENGTH * 2, "C3"); + require((recipients.length + percentages.length) <= 20 * 2, "C3"); require(recipients.length == percentages.length, "C4"); INetworkV2.Bounty storage bounty = bounties[id]; @@ -671,7 +661,8 @@ contract NetworkV2 is Governed, ReentrancyGuard { uint256 _total = 0; for (uint i = 0; i < recipients.length; i++) { - _total = _total.add(bounty.tokenAmount.div(100).mul(percentages[i])); + (bool tryAddSuccess, uint256 addMulDivResult) = _total.tryAdd(bounty.tokenAmount.mulDiv(percentages[i], 100)); + _total = addMulDivResult; // we require later on that _total === bounty.tokenAmount so we don't need to worry with tryAddSuccess now proposal.details.push(); proposal.details[i].recipient = recipients[i]; proposal.details[i].percentage = percentages[i]; @@ -703,13 +694,13 @@ contract NetworkV2 is Governed, ReentrancyGuard { require(disputes[msg.sender][b32] == 0, "1"); require(bounties[bountyId].pullRequests[bounties[bountyId].proposals[proposalId].prId].canceled == false, "2"); - uint256 weight = oracles[msg.sender].locked.add(oracles[msg.sender].byOthers); + uint256 weight = _senderWeight(); _amountGT0(weight); INetworkV2.Proposal storage proposal = bounties[bountyId].proposals[proposalId]; - - proposal.disputeWeight = proposal.disputeWeight.add(weight); + (, uint256 newDisputeWeight) = proposal.disputeWeight.tryAdd(weight); + proposal.disputeWeight = newDisputeWeight; disputes[msg.sender][b32] = weight; emit BountyProposalDisputed(bountyId, proposal.prId, proposalId, proposal.disputeWeight, proposal.disputeWeight >= _toPercent(oraclesDistributed, percentageNeededForDispute)); @@ -753,8 +744,8 @@ contract NetworkV2 is Governed, ReentrancyGuard { INetworkV2.Bounty storage bounty = bounties[id]; ERC20 erc20 = ERC20(bounty.transactional); INetworkV2.Proposal storage proposal = bounty.proposals[proposalId]; - - require(block.timestamp >= bounty.proposals[proposalId].creationDate.add(disputableTime), "2"); + (, uint256 timestamp) = bounty.proposals[proposalId].creationDate.tryAdd(disputableTime); + require(block.timestamp >= timestamp, "2"); require(proposal.disputeWeight < _toPercent(oraclesDistributed, percentageNeededForDispute), "3"); require(proposal.refusedByBountyOwner == false, "7"); require(bounties[id].pullRequests[proposal.prId].canceled == false, "8"); @@ -765,14 +756,16 @@ contract NetworkV2 is Governed, ReentrancyGuard { if (address(registry) != address(0)) { if (registry.treasury() != address(0)) { uint256 treasuryAmount = _toPercent(bounty.tokenAmount, registry.closeFeePercentage()); - returnAmount = returnAmount.sub(treasuryAmount); + (, uint256 returnAmountSubTreasuryAmount) = returnAmount.trySub(treasuryAmount); + returnAmount = returnAmountSubTreasuryAmount; require(erc20.transfer(registry.treasury(), treasuryAmount), "6"); } } uint256 mergerFee = _toPercent(returnAmount, mergeCreatorFeeShare); - uint256 proposerFee = _toPercent(returnAmount.sub(mergerFee), proposerFeeShare); - uint256 proposalAmount = returnAmount.sub(mergerFee).sub(proposerFee); + (, uint256 returnAmountSubMergerFee) = returnAmount.trySub(mergerFee); + uint256 proposerFee = _toPercent(returnAmountSubMergerFee, proposerFeeShare); + (, uint256 proposalAmount) = returnAmountSubMergerFee.trySub(proposerFee); require(erc20.transfer(msg.sender, mergerFee), "4"); require(erc20.transfer(proposal.creator, proposerFee), "9"); @@ -780,7 +773,7 @@ contract NetworkV2 is Governed, ReentrancyGuard { for (uint256 i = 0; i <= proposal.details.length - 1; i++) { INetworkV2.ProposalDetail memory detail = proposal.details[i]; INetworkV2.BountyConnector memory award = INetworkV2.BountyConnector(address(this), bounty.id, detail.percentage, "dev"); - require(erc20.transfer(detail.recipient, proposalAmount.mul(detail.percentage).div(100)), "5"); + require(erc20.transfer(detail.recipient, proposalAmount.mulDiv(detail.percentage, 100)), "5"); if (address(registry) != address(0)) { if (address(registry.bountyToken()) != address(0)) { @@ -795,7 +788,6 @@ contract NetworkV2 is Governed, ReentrancyGuard { bounty.closed = true; bounty.closedDate = block.timestamp; - closedBounties = closedBounties.add(1); emit BountyClosed(id, proposalId); } @@ -816,7 +808,7 @@ contract NetworkV2 is Governed, ReentrancyGuard { require(bounties[id].funding.length > fundingId, "W2"); _amountGT0(bounties[id].funding[fundingId].amount); - uint256 rewardAmount = bounties[id].funding[fundingId].amount.mul(bounties[id].rewardAmount).div(bounties[id].fundingAmount); + uint256 rewardAmount = bounties[id].funding[fundingId].amount.mulDiv(bounties[id].rewardAmount, bounties[id].fundingAmount); bounties[id].funding[fundingId].amount = 0; diff --git a/contracts/bepro/BountyToken.sol b/contracts/bepro/token/ERC721/BountyToken.sol similarity index 74% rename from contracts/bepro/BountyToken.sol rename to contracts/bepro/token/ERC721/BountyToken.sol index 2d09c44c..a1be46ed 100644 --- a/contracts/bepro/BountyToken.sol +++ b/contracts/bepro/token/ERC721/BountyToken.sol @@ -1,23 +1,24 @@ -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma abicoder v2; -import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import "../utils/Governed.sol"; -import "./INetworkV2.sol"; +import "../../../access/Governed.sol"; +import "../../INetworkV2.sol"; +import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; +import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; /* * A BountyToken is a non-transferable NFT that tracks the record of participation of a certain address on a * @INetworkV2.Bounty */ -contract BountyToken is ERC721, Governed { +contract BountyToken is ERC721URIStorage, Governed { address public dispatcher = address(0); - constructor(string memory name_, string memory symbol_, address _dispatcher) ERC721(name_, symbol_) Governed() { + constructor(string memory name_, string memory symbol_, address _dispatcher) ERC721URIStorage() ERC721(name_, symbol_) Governed() { dispatcher = _dispatcher; } - INetworkV2.BountyConnector[] tokenIds; + INetworkV2.BountyConnector[] public tokenIds; /* * Alias to safeMint @@ -57,7 +58,6 @@ contract BountyToken is ERC721, Governed { dispatcher = dispatcher_; } - function transferFrom(address from, address to, uint256 tokenId) public override { revert(); } - function safeTransferFrom(address from, address to, uint256 tokenId) public override { revert(); } - function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) public override { revert(); } + function transferFrom(address from, address to, uint256 tokenId) public override(ERC721, IERC721) { revert(); } + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public override(ERC721, IERC721) { revert(); } } diff --git a/contracts/custom/RealFevrMarketplace.sol b/contracts/custom/RealFevrMarketplace.sol deleted file mode 100644 index 2558abf2..00000000 --- a/contracts/custom/RealFevrMarketplace.sol +++ /dev/null @@ -1,101 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "../ERC721Marketplace.sol"; - - -interface RealFevrOpener721 is IERC721 { - function getMarketplaceDistributionForERC721(uint256 tokenId) external returns(uint256[] memory, address[] memory); -} - -contract RealFevrMarketplace is ERC721Marketplace { - - RealFevrOpener721 public erc721Address; - - constructor(ERC20 _erc20Address, - RealFevrOpener721 _erc721Address) - public ERC721Marketplace(_erc20Address, _erc721Address) { - erc721Address = _erc721Address; - } - - function removeERC721FromSaleAdmin(uint256 _tokenId) public onlyOwner { - require(sales[_tokenId].tokenId == _tokenId, "NFT is not in sale"); - sales[_tokenId].canceled = true; - erc721Address.transferFrom(address(this), sales[_tokenId].seller, _tokenId); - emit SaleCanceled(_tokenId, sales[_tokenId].seller); - delete sales[_tokenId]; - } - - function buyERC721(uint256 _tokenId) nonReentrant payable public virtual override { - require(sales[_tokenId].tokenId == _tokenId, "NFT is not in sale"); - require(!sales[_tokenId].sold, "NFT has to be available for purchase" ); - - //Get Marketplace Sale Distibutions on the Smart Contract - uint256[] memory distributionAmounts; - address[] memory distributionAddresses; - - (distributionAmounts, distributionAddresses) = erc721Address.getMarketplaceDistributionForERC721(_tokenId); - - if(isNativeTransaction()){ - //Transfer Native ETH to contract - require(sales[_tokenId].price == msg.value, "Require Amount of Native Currency to be correct"); - - uint256 totalFee = 0; - for(uint i = 0; i < distributionAmounts.length; i++){ - if(distributionAddresses[i] != address(0)){ - // Transfer fee to fee address - require(payable(distributionAddresses[i]).send( - (distributionAmounts[i] * sales[_tokenId].price) / 100 - ), "Contract was not allowed to do the transfer"); - totalFee = totalFee + distributionAmounts[i]; - } - } - - if(feeAddress != address(0)){ - // Transfer fee to fee address - require(feeAddress.send( - (feePercentage * sales[_tokenId].price) / 100 - ), "Contract was not allowed to do the transfer"); - } - - //Transfer Native Currency to seller - require(sales[_tokenId].seller.send(((100-feePercentage-totalFee) * sales[_tokenId].price) / 100), "Wasnt able to transfer the Native Currency to the seller"); - - }else{ - //Transfer ERC20 to contract - require(erc20Address.transferFrom(msg.sender, address(this), sales[_tokenId].price), "Contract was not allowed to do the transfer"); - - uint256 totalFee = 0; - for(uint i = 0; i < distributionAmounts.length; i++){ - if(distributionAddresses[i] != address(0)){ - // Transfer fee to fee address - require(erc20Address.transfer( - distributionAddresses[i], - (distributionAmounts[i] * sales[_tokenId].price) / 100 - ), "Contract was not allowed to do the transfer"); - totalFee = totalFee + distributionAmounts[i]; - } - } - - if(feeAddress != address(0)){ - // Transfer fee to fee address - require(erc20Address.transfer( - feeAddress, - (feePercentage * sales[_tokenId].price) / 100 - ), "Contract was not allowed to do the transfer"); - } - - //Transfer ERC20 to seller - require(erc20Address.transfer(sales[_tokenId].seller, ((100-feePercentage-totalFee) * sales[_tokenId].price) / 100), "Wasnt able to transfer the ERC20 to the seller"); - } - - //Transfer ERC721 to buyer - erc721Address.transferFrom(address(this), msg.sender, _tokenId); - - sales[_tokenId].sold = true; - emit SaleDone(_tokenId, msg.sender, sales[_tokenId].seller, sales[_tokenId].price); - delete sales[_tokenId]; - } - -} diff --git a/contracts/custom/RealFevrOpener.sol b/contracts/custom/RealFevrOpener.sol deleted file mode 100644 index 97be6e48..00000000 --- a/contracts/custom/RealFevrOpener.sol +++ /dev/null @@ -1,251 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "../utils/Ownable.sol"; - -contract RealFevrOpener is Ownable, ERC721 { - - using SafeMath for uint256; - - ERC20 public _purchaseToken; - // Mapping from address to bool, if egg was already claimed - // The hash is about the userId and the nftIds array - mapping(address => mapping(uint256 => bool)) public registeredIDs; - mapping(address => uint256[]) public registeredIDsArray; - mapping(uint256 => bool) public alreadyMinted; - - mapping(uint256 => Pack) public packs; - mapping(uint256 => MarketplaceDistribution) private marketplaceDistributions; - - uint256 public packIncrementId = 1; - uint256 public lastNFTID = 1; - - event PackCreated(uint256 packId, string indexed serie, string indexed packType, string indexed drop); - event PackBought(address indexed by, uint256 indexed packId); - event PackOpened(address indexed by, uint256 indexed packId); - event PackDelete(uint256 indexed packId); - event NftMinted(uint256 indexed nftId); - - uint256 public _realFvrTokenPriceUSD = 0; - - bool public _closed = false; - uint256 public _openedPacks = 0; - - struct Pack { - uint256 packId; - uint256 nftAmount; - uint256 initialNFTId; - uint256 saleStart; - uint256[] saleDistributionAmounts; - address[] saleDistributionAddresses; - // Marketplace - // Catalog info - uint256 price; // in usd (1 = $0.000001) - string serie; - string drop; - string packType; - bool opened; - //external info - address buyer; - } - - struct MarketplaceDistribution { - uint256[] marketplaceDistributionAmounts; - address[] marketplaceDistributionAddresses; - } - - constructor (string memory name, string memory symbol, ERC20 purchaseToken) public ERC721(name, symbol) {} - - function _distributePackShares(address from, uint256 packId, uint256 amount) internal { - //transfer of fee share - Pack memory pack = packs[packId]; - - for(uint i = 0; i < pack.saleDistributionAddresses.length; i++){ - //transfer of stake share - _purchaseToken.transferFrom( - from, - pack.saleDistributionAddresses[i], - (pack.saleDistributionAmounts[i] * amount) / 100 - ); - } - } - - function setTokenURI(uint256 tokenId, string memory uri) public onlyOwner { - _setTokenURI(tokenId, uri); - } - - function setBaseURI(string memory baseURI) public onlyOwner { - _setBaseURI(baseURI); - } - - - function exists(uint256 tokenId) public view returns (bool) { - return _exists(tokenId); - } - - function getRegisteredIDs(address _address) public view returns(uint256[] memory) { - return registeredIDsArray[_address]; - } - - function getPackbyId(uint256 _packId) public returns (uint256, uint256, uint256, string memory, string memory, string memory, address, - address[] memory, uint256[] memory, bool) { - Pack memory pack = packs[_packId]; - return ( - pack.packId, pack.initialNFTId, pack.price, pack.serie, pack.drop, pack.packType, pack.buyer, - pack.saleDistributionAddresses, pack.saleDistributionAmounts, pack.opened); - } - - function getMarketplaceDistributionForERC721(uint256 _tokenId) public view returns(uint256[] memory, address[] memory) { - return (marketplaceDistributions[_tokenId].marketplaceDistributionAmounts, marketplaceDistributions[_tokenId].marketplaceDistributionAddresses); - } - - function getPackPriceInFVR(uint256 packId) public view returns (uint256) { - return packs[packId].price.mul(_realFvrTokenPriceUSD).div(10**3); - } - - function buyPack(uint256 packId) public { - require(!_closed, "Opener is locked"); - require(packs[packId].buyer == address(0), "Pack was already bought"); - require(packs[packId].price != 0, "Pack has to exist"); - - uint256 price = getPackPriceInFVR(packId); - - require(_purchaseToken.allowance(msg.sender, address(this)) >= price, "First you have to allow the use of the tokens by the Opener, use allow function"); - - address from = msg.sender; - - _distributePackShares(from, packId, price); - - _openedPacks += 1; - - for(uint i = 0; i < packs[packId].nftAmount; i++){ - registeredIDs[msg.sender][packs[packId].initialNFTId+i] = true; - registeredIDsArray[msg.sender].push(i); - } - - packs[packId].buyer = from; - - emit PackBought(from, packId); - } - - function buyPacks(uint256[] memory packIds) public { - for(uint i = 0; i < packIds.length; i++){ - buyPack(packIds[i]); - } - } - - function openPack(uint256 packId) public { - require(!_closed, "Opener is locked"); - require(!packs[packId].opened, "Opened Already"); - require(packs[packId].buyer != address(0), "Pack was not bought"); - require(packs[packId].buyer == msg.sender, "You were not the pack buyer"); - - packs[packId].opened = true; - - emit PackOpened(msg.sender, packId); - } - - function openPacks(uint256[] memory packIds) public { - for(uint i = 0; i < packIds.length; i++){ - openPack(packIds[i]); - } - } - - function createPack(uint256 nftAmount, uint256 price /* 1 = ($1) */, - string memory serie, string memory packType, string memory drop, uint256 saleStart, - address[] memory saleDistributionAddresses, uint256[] memory saleDistributionAmounts, /* [1;98;1]*/ - address[] memory marketplaceDistributionAddresses, uint256[] memory marketplaceDistributionAmounts /* [1;98;1]*/ - ) public onlyOwner { - - require(saleDistributionAmounts.length == saleDistributionAddresses.length, "saleDistribution Lenghts are not the same"); - uint256 totalFees = 0; - for(uint i = 0; i < saleDistributionAddresses.length; i++){ - totalFees += saleDistributionAmounts[i]; - } - require(totalFees == 100, "Sum of all amounts has to equal 100"); - - - require(marketplaceDistributionAddresses.length == marketplaceDistributionAmounts.length, "marketplaceDistribution Lenghts are not the same"); - - Pack memory pack; - pack.packId = packIncrementId; - pack.nftAmount = nftAmount; - pack.saleStart = saleStart; - pack.initialNFTId = lastNFTID; - pack.price = price; - pack.serie = serie; - pack.drop = drop; - pack.saleDistributionAddresses = saleDistributionAddresses; - pack.saleDistributionAmounts = saleDistributionAmounts; - pack.packType = packType; - packs[packIncrementId] = pack; - - - for(uint j = 1; j <= nftAmount; j++){ - // Marketplace Distributions - MarketplaceDistribution memory marketplaceDistribution = MarketplaceDistribution(marketplaceDistributionAmounts, marketplaceDistributionAddresses); - marketplaceDistributions[lastNFTID+j] = marketplaceDistribution; - } - - emit PackCreated(packIncrementId, serie, packType, drop); - lastNFTID = lastNFTID + nftAmount; - packIncrementId = packIncrementId+1; - } - - function offerPack(uint256 packId, address receivingAddress) public onlyOwner { - require(packs[packId].packId == packId, "Pack does not exist"); - packs[packId].buyer = receivingAddress; - - _openedPacks += 1; - - for(uint i = 0; i < packs[packId].nftAmount; i++){ - registeredIDs[receivingAddress][packs[packId].initialNFTId+i] = true; - registeredIDsArray[receivingAddress].push(i); - } - emit PackBought(receivingAddress, packId); - } - - function editPackInfo(uint256 _packId, uint256 _saleStart, string memory serie, string memory packType, string memory drop, uint256 price) public onlyOwner { - require(block.timestamp < packs[_packId].saleStart, "Sale is already live"); - packs[_packId].saleStart = _saleStart; - packs[_packId].serie = serie; - packs[_packId].packType = packType; - packs[_packId].drop = drop; - packs[_packId].price = price; - } - - function deletePackById(uint256 packId) public onlyOwner { - require(block.timestamp < packs[packId].saleStart, "Sale is already live"); - delete packs[packId]; - emit PackDelete(packId); - } - - function mint(uint256 tokenIdToMint) public { - require(registeredIDs[msg.sender][tokenIdToMint], "Token was not registered or not the rightful owner"); - require(!alreadyMinted[tokenIdToMint], "Already minted"); - - alreadyMinted[tokenIdToMint] = true; - _safeMint(msg.sender, tokenIdToMint); - emit NftMinted(tokenIdToMint); - } - - function setPurchaseTokenAddress(ERC20 purchaseToken) public onlyOwner { - _purchaseToken = purchaseToken; - } - - function setTokenPriceInUSD(uint256 newPrice /* 1*10e18 -> 1 FVR = $1; 1*10e17 -> 0.1 FVR = $1 */) public onlyOwner { - require(newPrice != 0, "newPrice has to higher than 0"); - _realFvrTokenPriceUSD = newPrice; - } - - function lock() public onlyOwner { - _closed = true; - } - - function unlock() public onlyOwner { - _closed = false; - } -} diff --git a/contracts/custom/loophole/ILoophole.sol b/contracts/custom/loophole/ILoophole.sol deleted file mode 100644 index 4794b9cc..00000000 --- a/contracts/custom/loophole/ILoophole.sol +++ /dev/null @@ -1,244 +0,0 @@ -pragma solidity >=0.6.0 <0.8.0; -pragma abicoder v2; //needed to return struct - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; - -/** - * @dev Interface of the Loophole contract. - */ -interface ILoophole { - - // Main Pools and Loop Pool - // INFO | POOL VARIABLES - struct PoolInfo { - address token; // Address of staked token contract. - uint256 allocPoint; // How many allocation points assigned to this pool, LP tokens to distribute per block to this pool. - uint256 lastRewardBlock; // Last block number that LP tokens distribution occurs. - uint256 totalPool; // total staked tokens in the pool. - uint256 entryStakeTotal; // total tokens entered into a pool. - uint256 totalDistributedPenalty; // total tokens distributed from the exit penalty. - uint256 accLPtokensPerShare; // Accumulated LP tokens per share which is pool token, times 1e12, see note below. - //NOTE: 1e12 is our scaling multiplier since we calculate LP tokens per pool token staked before adding to this variable, - //with this multiplier we can have as much as this price ration between LP and pool token: - //1 LP token / 1e12 pool tokens - //we will usually have more than 1 LP as reward but we divide per pool tokens staked, that amount has to be up to 1e12 in this case, - //if it is more, our formula won't work, we leave decimals out of this because LP token decimals are also present, - //usually tokens have 18 decimals for ERC20 token standard. - } - - // >>> upgrade version - struct UserInfo { - // accumulated staked amount - uint256 entryStake; - - // accumulated net unstaked amount or exitStake - uint256 unstake; - - // current user adjusted stake in the pool - uint256 entryStakeAdjusted; - - // LP tokens reward mark to control new rewards and already paid ones - uint256 payRewardMark; - } - - - - /// @notice add/enable new pool, only owner mode - /// @dev ADD | NEW TOKEN POOL - /// @param token Token address as IERC20 - /// @param allocPoint Pool allocation point/share distributed to this pool from mining rewards - /// @return pid added token pool index - function add(IERC20 token, uint256 allocPoint) external returns (uint256 pid); - - /// @notice update pool allocation point/share - /// @dev UPDATE | ALLOCATION POINT - /// @param pid Pool id - /// @param allocPoint Set allocation point/share for pool id - /// @param withUpdate Update all pools and distribute mining reward for all - function set(uint256 pid, uint256 allocPoint, bool withUpdate) external; - - /// @notice stake tokens on given pool id - /// @param pid Pool id - /// @param amount The token amount user wants to stake to the pool. - function stake(uint256 pid, uint256 amount) external; - - /// @notice user exit staking amount from main pool, require main pool only - /// @param pid Pool id - /// @param amount The token amount user wants to exit/unstake from the pool. - /// @param amountOutMinimum The min LP token amount expected to be received from exchange, - /// needed from outside for security reasons, using zero value in production is discouraged. - /// @return net tokens amount sent to user address - function exit(uint256 pid, uint256 amount, uint256 amountOutMinimum) external returns (uint256); - - /// @notice User exit staking amount from LOOP pool, require LOOP pool only - /// @param amount The token amount user wants to exit/unstake from the pool. - /// @return net tokens amount sent to user address - function exit(uint256 amount) external returns (uint256); - - /// @notice View pending LP token rewards for user - /// @dev VIEW | PENDING REWARD - /// @param pid Pool id of main pool - /// @param userAddress User address to check pending rewards for - /// @return Pending LP token rewards for user - function getUserReward(uint256 pid, address userAddress) external view returns (uint256); - - /// @notice User collects his share of LP tokens reward - /// @param pid Pool id - /// @return LP reward tokens amount sent to user address - function collectRewards(uint256 pid) external returns (uint256); - - /// @notice User collects his share of LP tokens rewards of all pools - /// @dev MASS LP rewards collect | HIGH GAS call - /// @return LP rewards tokens from all pools - /// NOTE: index zero is zero for LOOP pool - //function collectRewardsAll() external returns (uint256[] memory); - - /// @notice current total user stake in a given pool - /// @param pid Pool id - /// @param user The user address - /// @return stake tokens amount - function currentStake(uint256 pid, address user) external view returns (uint256); - - /// @notice percentage of how much a user has earned so far from the other users exit, would be just a statistic - /// @param pid Pool id - /// @param user The user address - /// @return earnings percent as integer - function earnings(uint256 pid, address user) external view returns (uint256); - - /// @notice get blocks range given two block numbers, usually computes blocks elapsed since last mining reward block. - /// @dev RETURN | BLOCK RANGE SINCE LAST REWARD AS REWARD MULTIPLIER | INCLUDES START BLOCK - /// @param from block start - /// @param to block end - /// @return blocks count - function getBlocksFromRange(uint256 from, uint256 to) external view returns (uint256); - - /// @notice update all pools for mining rewards - /// @dev UPDATE | (ALL) REWARD VARIABLES | BEWARE: HIGH GAS POTENTIAL - function massUpdatePools() external; - - /// @notice Update pool to trigger LP tokens reward since last reward mining block - /// @dev UPDATE | (ONE POOL) REWARD VARIABLES - /// @param pid Pool id - /// @return blocksElapsed Blocks elapsed since last reward block - /// @return lpTokensReward Amount of LP tokens reward since last reward block - /// @return accLPtokensPerShare Pool accumulated LP tokens per pool token (per share) - function updatePool(uint256 pid) external returns (uint256 blocksElapsed, uint256 lpTokensReward, uint256 accLPtokensPerShare); - - /// @notice get LP tokens reward for given pool id, only MAIN pool, LOOP pool reward will always be zero - /// @param pid Pool id - /// @return tokensReward Tokens amount as reward based on last mining block - function getPoolReward(uint256 pid) external view returns (uint256 tokensReward); - - /// @notice get current block timestamp - /// @return current block timestamp - function getBlockTimestamp() external view returns (uint256); - - /// @notice get current block number - /// @return current block number - function getBlockNumber() external view returns (uint256); - - /// @notice Get pool attributes - /// @param pid Pool id - /// @return token - /// @return allocPoint - /// @return lastRewardBlock - /// @return totalPool - /// @return entryStakeTotal - /// @return totalDistributedPenalty - /// @return accLPtokensPerShare - /// All pool attributes - function getPool(uint256 pid) external view returns ( - address token, uint256 allocPoint, uint256 lastRewardBlock, uint256 totalPool, - uint256 entryStakeTotal, uint256 totalDistributedPenalty, uint256 accLPtokensPerShare); - - /// @notice Get pool attributes as struct - /// @param pid Pool id - /// @return pool - function getPoolInfo(uint256 pid) external view returns (PoolInfo memory pool); - - /// @notice Get pools array length - /// @return pools count - function poolsCount() external view returns (uint256); - - /// @notice Get pool attributes as struct - /// @param pid Pool id - /// @param user User address - /// @return user info - function getUserInfo(uint256 pid, address user) external view returns (UserInfo memory); - - /// @notice Get total accumulated 'entry stake' so far for a given user address in a pool id - /// @param pid Pool id - /// @param user User address - /// @return user entry stake amount in a given pool - function getTotalEntryStakeUser(uint256 pid, address user) external view returns (uint256); - - /// @notice Get total accumulated 'unstake' so far for a given user address in a pool id - /// @param pid Pool id - /// @param user User address - /// @return user unstake amount in a given pool - function getTotalUnstakeUser(uint256 pid, address user) external view returns (uint256); - - /// @notice Get current net 'entry stake' for a given user address in a pool id - /// @param pid Pool id - /// @param user User address - /// @return user current entry stake amount in a given pool - //function getCurrentEntryStakeUser(uint256 pid, address user) external view returns (uint256); - - /// @notice Get 'entry stake adjusted' for a given user address in a pool id - /// @param pid Pool id - /// @param user User address - /// @return user entry stake adjusted amount in given pool - function getEntryStakeAdjusted(uint256 pid, address user) external view returns (uint256); - - - - /// @notice PoolAdded event when new pool is added/enabled - /// @param token Staking token address - /// @param allocPoint Allocation point of this token in the total pools allocation - /// @param pid Pool id, index in the pools array - event PoolAdded(address indexed token, uint256 indexed allocPoint, uint256 indexed pid); - - /// @notice PoolSet event when pool allocation point/share is set/updated - /// @param token Staking token address - /// @param allocPoint Allocation point of this token in the total pools allocation - /// @param pid Pool id, index in the pools array - event PoolSet(address indexed token, uint256 indexed allocPoint, uint256 indexed pid); - - /// @notice PoolRewardUpdated event when pool block is updated for liquidity mining LP rewards - /// @param token Staking token address - /// @param blockNumber Block number - /// @param blocksElapsed Blocks elapsed since last reward block - /// @param lpTokensReward LP tokens reward since last mining block - /// @param accLPtokensPerShare Accumulated LP tokens per pool tokens - /// @param pid Pool id, index in the pools array - event PoolRewardUpdated(address indexed token, uint256 blockNumber, uint256 blocksElapsed, uint256 lpTokensReward, uint256 accLPtokensPerShare, uint256 indexed pid); - - /// @notice Deposit event when user stakes tokens into a pool - /// @param user User/owner address - /// @param pid Pool id - /// @param amount Amount of tokens to stake - event Deposit(address indexed user, uint256 indexed pid, uint256 amount); - - /// @notice Withdraw event when user withdraws/exits amount from staking pool - /// @param user User/owner address - /// @param pid Pool id - /// @param amount Amount of tokens to withdraw/exit - /// @param netAmount Net amount of tokens to withdraw/exit after paying penalty - event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, uint256 netAmount); - //event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); - - /// @notice Collect LP tokens reward from staking pool - /// @param user User/owner address - /// @param pid Pool id - /// @param reward Amount of LP tokens user has got as reward from pool id - event Collect(address indexed user, uint256 indexed pid, uint256 reward); - - /// @notice Token exchanged event when user exits/unnstakes and part of penalty are exchanged for LP tokens on uniswap - /// @param user User address - /// @param token Token address to be exchanged - /// @param tokenAmount Token amount to be exchanged for LP tokens - /// @param tokenLP LP token address - /// @param tokenAmountLP LP Token amount as result from the exchange - event TokenExchanged(address indexed user, address indexed token, uint256 tokenAmount, address indexed tokenLP, uint256 tokenAmountLP); - -} \ No newline at end of file diff --git a/contracts/custom/loophole/Loophole.sol b/contracts/custom/loophole/Loophole.sol deleted file mode 100644 index 3051085c..00000000 --- a/contracts/custom/loophole/Loophole.sol +++ /dev/null @@ -1,620 +0,0 @@ -pragma solidity >=0.6.0 <0.8.0; -//pragma solidity =0.7.6; -pragma abicoder v2; //needed to return struct - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/utils/Context.sol"; - -import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; -import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol'; -import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol'; - -import "../../IERC20Events.sol"; -import "./ILoophole.sol"; -import "../../utils/Ownable.sol"; -import "../../uniswap/UniswapV3RouterBridge.sol"; - -/// @title LoopHole Finance smart contract -contract Loophole is ILoophole, IERC20events, Ownable, Context, UniswapV3RouterBridge { - using SafeMath for uint256; - - //NOTE: if we need specific event we need them in the smart contract - //event Transfer(address indexed from, address indexed to, uint256 value); - - // hundred constant used in percentage calculations as parts/100 - uint256 private immutable HUNDRED = 100; - - // two hundred constant used in percentage calculations as parts/100/2 - uint256 private immutable TWO_HUNDRED = 200; - - // LOOP POOL indx in the pools list - uint256 private immutable LOOP_POOL_INDEX = 0; - - /// @notice Liquidity Provider reward token - address public lpToken; - /// @notice amount of LP tokens to reward per block - uint256 public lpTokensPerBlock; - - // we use the uniswap pool fee 0.3%. - uint24 public immutable uniswapPoolFee = 3000; - - // for details about this variable, please read the NOTE below 'accLPtokensPerShare' in PoolInfo struct - uint256 public immutable LPtokensPerShareMultiplier = 1e12; - - // maps poolId-user-UserInfo - mapping(uint256 => mapping(address => UserInfo)) private userInfo; - - // LOOP pool is on index 0, the rest are MAIN pools - PoolInfo[] private poolInfo; - - uint256 public totalAllocPoint = 0; // automated track of total allocated points of all pools = sum of all pools points - uint256 public startBlock; // start block for liquidity mining LP tokens - mapping (address => bool) public poolExists; //mapping for existent pools by given token address. - - // MAIN pool type exit penalty, applied to user current staked amount as e.g 20 for 20 % - uint256 public immutable exitPenalty; - - // LOOP pool exit penalty, applied to user current staked amount + profit from pool distribution, as e.g 20 for 20 % - uint256 public immutable exitPenaltyLP; - - - - /// @notice constructor - /// @param _swapRouter Uniswap SwapRouter address to access the market for tokens exchange - /// @param _lpToken Liquidity Provider token address as IERC20 - /// @param _lpTokensPerBlock LP tokens amount reward per mining block - /// @param _startBlock Start block for mining reward - /// @param _exitPenalty Exit penalty from main pool, for example 20 for 20 % - /// @param _exitPenaltyLP Exit penalty from loop pool, for example 20 for 20 % - constructor( - ISwapRouter _swapRouter - , IERC20 _lpToken - , uint256 _lpTokensPerBlock - , uint256 _startBlock - , uint256 _exitPenalty - , uint256 _exitPenaltyLP - ) UniswapV3RouterBridge(_swapRouter) { - - lpToken = address(_lpToken); - lpTokensPerBlock = _lpTokensPerBlock; - startBlock = _startBlock; - - exitPenalty = _exitPenalty; //20; // default value is 20% as 20 - exitPenaltyLP = _exitPenaltyLP; //10; // default value is 10% as 10 - - // zero is poolAllocPoint for LOOP pool, this is a LP tokens reward pool - add(_lpToken, 0); - } - - /// Modifiers - - modifier requireMainPool(uint256 pid) { - _requireMainPool(pid); - _; - } - - modifier requireValidPid(uint256 pid) { - _requireValidPid(pid); - _; - } - - modifier requireNewPool(address token) { - _requireNewPool(token); - _; - } - - modifier requireNewAllocPoint(uint256 pid, uint256 allocPoint) { - _requireNewAllocPoint(pid, allocPoint); - _; - } - - /// Modifier helper functions, used to reduse/optimize contract bytesize - - // require given pool id to be MAIN pool index, different then LOOP pool index - function _requireMainPool(uint256 pid) internal pure { - require(pid != LOOP_POOL_INDEX, "PID_LOOP"); //PID is LOOP pool - } - - // require given pool id to be in range - function _requireValidPid(uint256 pid) internal view { - require(pid < poolInfo.length, "PID_OORI"); //PID Out Of Range Index - } - - // require new pool token address only - function _requireNewPool(address token) internal view { - require(poolExists[token] == false, "TPE"); //Token Pool Exists - } - - // require new allocation point for pool - function _requireNewAllocPoint(uint256 pid, uint256 allocPoint) internal view { - require(poolInfo[pid].allocPoint != allocPoint, "PID_NR"); //PID New Required - } - - /// Features - - /// @notice add/enable new pool, only owner mode - /// @dev ADD | NEW TOKEN POOL - /// @param token Token address as IERC20 - /// @param allocPoint Pool allocation point/share distributed to this pool from mining rewards - /// @return pid added token pool index - function add( - IERC20 token - , uint256 allocPoint // when zero it is the LOOP pool - ) public onlyOwner requireNewPool(address(token)) virtual override returns (uint256 pid) { - - uint256 lastRewardBlock = getBlockNumber() > startBlock ? getBlockNumber() : startBlock; - totalAllocPoint = totalAllocPoint.add(allocPoint); - poolInfo.push(PoolInfo({ - token: address(token), - allocPoint: allocPoint, - totalPool: 0, - entryStakeTotal: 0, - totalDistributedPenalty: 0, - lastRewardBlock: lastRewardBlock, - accLPtokensPerShare: 0 - })); - - poolExists[address(token)] = true; - emit PoolAdded(address(token), allocPoint, poolInfo.length-1); - return (poolInfo.length-1); - } - - /// @notice update pool allocation point/share - /// @dev UPDATE | ALLOCATION POINT - /// @param pid Pool id - /// @param allocPoint Set allocation point/share for pool id - /// @param withUpdate Update all pools and distribute mining reward for all - function set(uint256 pid, uint256 allocPoint, bool withUpdate) external - onlyOwner - requireMainPool(pid) - requireValidPid(pid) - requireNewAllocPoint(pid, allocPoint) - virtual override - { - if (withUpdate) { - massUpdatePools(); - } - totalAllocPoint = totalAllocPoint.sub(poolInfo[pid].allocPoint).add(allocPoint); - poolInfo[pid].allocPoint = allocPoint; - emit PoolSet(address(poolInfo[pid].token), allocPoint, pid); - } - - - - // Main Pools and Loop Pool - /// @notice stake tokens on given pool id - /// @param pid Pool id - /// @param amount The token amount user wants to stake to the pool. - function stake(uint256 pid, uint256 amount) external requireValidPid(pid) virtual override { - if (isMainPoolId(pid)) //LOOP pool can not be mined for LP rewards - _updatePool(pid); - - PoolInfo storage pool = poolInfo[pid]; - UserInfo storage user = userInfo[pid][_msgSender()]; - - // withdraw LP rewards based on user current stake - if (isMainPoolId(pid)) - withdrawLPrewards(pid, pool.accLPtokensPerShare, user.payRewardMark); - - adjustBalancesStakeEntry(pool, user, amount); - - TransferHelper.safeTransferFrom(pool.token, _msgSender(), address(this), amount); - - // update LP rewards withdrawn - if (isMainPoolId(pid)) - updateLPrewardsPaid(pid, pool.accLPtokensPerShare, user); - - emit Deposit(_msgSender(), pid, amount); - } - - /// @notice user exit staking amount from main pool, require main pool only - /// @param pid Pool id - /// @param amount The token amount user wants to exit/unstake from the pool. - /// @param amountOutMinimum The min LP token amount expected to be received from exchange, - /// needed from outside for security reasons, using zero value in production is discouraged. - /// @return net tokens amount sent to user address - function exit(uint256 pid, uint256 amount, uint256 amountOutMinimum) external - requireMainPool(pid) - requireValidPid(pid) - virtual override - returns (uint256) - { - _updatePool(pid); - - PoolInfo storage pool = poolInfo[pid]; - UserInfo storage user = userInfo[pid][_msgSender()]; - - // withdraw LP rewards based on user current stake - withdrawLPrewards(pid, pool.accLPtokensPerShare, user.payRewardMark); - - adjustBalancesStakeExit(pool, user, pid, amount); - - uint256 exitPenaltyAmount; - if (pool.totalPool == 0) { // last user exited his whole stake/amount - // no exit penalty amount is added to pool.totalDistributedPenalty in this case - // whole exit penalty is swaped via uniswap and added to LOOP pool - exitPenaltyAmount = amount.mul(exitPenalty).div(HUNDRED); - } - else { - //NOTE: x_tokens = amount * (exitPenalty / 2) - //NOTE: x_tokens go back into the pool for distribution to the rest of the users - //NOTE: the other x_tokens go to exchange for LP tokens - // totalPool = totalPool - amount * (1 - exitPenalty / 2); - - //NOTE: due to rounding margin error the contract might have more tokens than specified by pool variables - //NOTE: for example 21 tokens, 50% of it is 10 as we work with integers, 1 token is still in the contract - exitPenaltyAmount = amount.mul(exitPenalty).div(TWO_HUNDRED); //div(HUNDRED).div(2) - pool.totalDistributedPenalty = pool.totalDistributedPenalty.add(exitPenaltyAmount); - pool.totalPool = pool.totalPool.add(exitPenaltyAmount); - } - - uint256 amountLP = swapCollectedPenalty(pool.token, exitPenaltyAmount, amountOutMinimum); - addRewardToLoopPool(amountLP); - emit TokenExchanged(_msgSender(), pool.token, exitPenaltyAmount, lpToken, amountLP); - - uint256 withdrawAmount = amount.mul(HUNDRED.sub(exitPenalty)).div(HUNDRED); //amount * (1 - exitPenalty); - user.unstake = user.unstake.add(withdrawAmount); - TransferHelper.safeTransfer(pool.token, _msgSender(), withdrawAmount); - emit Withdraw(_msgSender(), pid, amount, withdrawAmount); - - // update LP rewards withdrawn - updateLPrewardsPaid(pid, pool.accLPtokensPerShare, user); - - return withdrawAmount; - } - - /// @notice User exit staking amount from LOOP pool, require LOOP pool only - /// @param amount The token amount user wants to exit/unstake from the pool. - /// @return net tokens amount sent to user address - function exit(uint256 amount) external virtual override returns (uint256) { - uint256 pid = LOOP_POOL_INDEX; - - PoolInfo storage pool = poolInfo[pid]; - UserInfo storage user = userInfo[pid][_msgSender()]; - - adjustBalancesStakeExit(pool, user, pid, amount); - - //NOTE: x_tokens = amount * exitPenaltyLP / 2 - //NOTE: x_tokens go back into the LOOP pool for distribution to the rest of the users - //NOTE: the other x_tokens are burnt - uint256 exitPenaltyAmount = amount.mul(exitPenaltyLP).div(HUNDRED); //amount * exitPenaltyLP - liquidityMining(exitPenaltyAmount); // LP tokens back to Liquidity Mining available for mining rewards - //burn(exitPenaltyAmount); - - uint256 withdrawAmount = amount.mul(HUNDRED.sub(exitPenaltyLP)).div(HUNDRED); //amount * (1 - exitPenaltyLP); - user.unstake = user.unstake.add(withdrawAmount); - TransferHelper.safeTransfer(pool.token, _msgSender(), withdrawAmount); - emit Withdraw(_msgSender(), pid, amount, withdrawAmount); - - return withdrawAmount; - } - - /// @notice View pending LP token rewards for user - /// @dev VIEW | PENDING REWARD - /// @param pid Pool id of main pool - /// @param userAddress User address to check pending rewards for - /// @return Pending LP token rewards for user - function getUserReward(uint256 pid, address userAddress) - requireMainPool(pid) - requireValidPid(pid) - external view virtual override returns (uint256) - { - PoolInfo storage pool = poolInfo[pid]; - UserInfo storage user = userInfo[pid][userAddress]; - uint256 accLPtokensPerShare = pool.accLPtokensPerShare; - //uint256 lpSupply = pool.token.balanceOf(address(this)); - uint256 lpSupply = pool.totalPool; - if (getBlockNumber() > pool.lastRewardBlock && lpSupply != 0) { - uint256 lpTokensReward = getPoolReward(pool); - // calculate LP tokens per pool token of selected pid pool - accLPtokensPerShare = accLPtokensPerShare.add(lpTokensReward.mul(LPtokensPerShareMultiplier).div(lpSupply)); - } - - uint256 currentRewardMark = currentStake(pid, userAddress).mul(accLPtokensPerShare).div(LPtokensPerShareMultiplier); - if (currentRewardMark > user.payRewardMark) - return currentRewardMark.sub(user.payRewardMark); - else return 0; - } - - /// @notice Adjust balances for stake operation - /// @param pool Pool storage struct - /// @param user User storage struct - /// @param amount Token amount to stake - function adjustBalancesStakeEntry(PoolInfo storage pool, UserInfo storage user, uint256 amount) internal - { - // check div by 0 when totalPool = 0 - uint256 newEntryStake; - if (pool.totalPool == 0 || pool.entryStakeTotal == 0) - newEntryStake = amount; - else newEntryStake = amount.mul(pool.entryStakeTotal).div(pool.totalPool); - user.entryStakeAdjusted = user.entryStakeAdjusted.add(newEntryStake); - pool.entryStakeTotal = pool.entryStakeTotal.add(newEntryStake); - user.entryStake = user.entryStake.add(amount); - pool.totalPool = pool.totalPool.add(amount); - } - - /// @notice Adjust balances for unstake/exit operation - /// @param pool Pool storage struct - /// @param user User storage struct - /// @param pid Pool id - /// @param amount Token amount to unstake/exit - function adjustBalancesStakeExit(PoolInfo storage pool, UserInfo storage user, uint256 pid, uint256 amount) internal - { - uint256 userCurrentStake = currentStake(pid, _msgSender()); - uint256 exitAmount = amount.mul(user.entryStakeAdjusted).div(userCurrentStake); - pool.entryStakeTotal = pool.entryStakeTotal.sub(exitAmount); - user.entryStakeAdjusted = user.entryStakeAdjusted.sub(exitAmount); - pool.totalPool = pool.totalPool.sub(amount); - } - - /// @notice Withdraw available LP reward for pool id - /// @dev Use this function paired with 'updateLPrewardsPaid' on deposits, withdraws and lp rewards withdrawals. - /// @param pid Pool id - /// @param poolAccLPtokensPerShare Pool accLPtokensPerShare - /// @param userPayRewardMark User payRewardMark - /// @return LP reward withdrawn - function withdrawLPrewards(uint256 pid, uint256 poolAccLPtokensPerShare, uint256 userPayRewardMark) internal returns (uint256) - { - uint256 userCurrentStake = currentStake(pid, _msgSender()); - uint256 accReward = userCurrentStake.mul(poolAccLPtokensPerShare).div(LPtokensPerShareMultiplier); - if (accReward > userPayRewardMark) { // send pending rewards, if applicable - uint256 reward = accReward.sub(userPayRewardMark); - TransferHelper.safeTransfer(lpToken, _msgSender(), reward); - emit Collect(_msgSender(), pid, reward); - return reward; - } - else return 0; - } - - /// @notice Update accumulated withdrawn LP rewards - /// @dev Use this function paired with 'withdrawLPrewards' on deposits, withdraws and lp rewards withdrawals. - /// @param pid Pool id - /// @param poolAccLPtokensPerShare Pool accLPtokensPerShare - /// @param user UserInfo pointer - function updateLPrewardsPaid(uint256 pid, uint256 poolAccLPtokensPerShare, UserInfo storage user) internal - { - uint256 userCurrentStake = currentStake(pid, _msgSender()); - user.payRewardMark = userCurrentStake.mul(poolAccLPtokensPerShare).div(LPtokensPerShareMultiplier); - } - - /// @notice User collects his share of LP tokens reward - /// @dev Internal function to be called by other external ones, - /// checks/modifiers are used in external functions only to avoid duplicates. - /// @param pid Pool id - /// @return LP reward tokens amount sent to user address - function _collectRewards(uint256 pid) internal returns (uint256) - { - _updatePool(pid); - - PoolInfo storage pool = poolInfo[pid]; - UserInfo storage user = userInfo[pid][_msgSender()]; - uint256 poolAccLPtokensPerShare = pool.accLPtokensPerShare; - uint256 reward = withdrawLPrewards(pid, poolAccLPtokensPerShare, user.payRewardMark); - updateLPrewardsPaid(pid, poolAccLPtokensPerShare, user); - return reward; - } - - /// @notice User collects his share of LP tokens reward - /// @param pid Pool id - /// @return LP reward tokens amount sent to user address - function collectRewards(uint256 pid) - requireMainPool(pid) - requireValidPid(pid) - external virtual override returns (uint256) - { - return _collectRewards(pid); - } - - /// @notice current total user stake in a given pool - /// @param pid Pool id - /// @param user The user address - /// @return stake tokens amount - function currentStake(uint256 pid, address user) requireValidPid(pid) public view virtual override returns (uint256) { - PoolInfo storage pool = poolInfo[pid]; - if (pool.entryStakeTotal == 0) - return 0; - return pool.totalPool.mul(userInfo[pid][user].entryStakeAdjusted).div(pool.entryStakeTotal); - } - - /// @notice percentage of how much a user has earned so far from the other users exit, would be just a statistic - /// @param pid Pool id - /// @param user The user address - /// @return earnings percent as integer - function earnings(uint256 pid, address user) requireValidPid(pid) external view virtual override returns (uint256) { - UserInfo storage userData = userInfo[pid][user]; - return (userData.unstake.add(currentStake(pid, user))).div(userData.entryStake); - } - - // Main Pools - /// @notice swap collected penalty from main pools exits for LOOPhole (LP) tokens in the open market - /// @param tokenIn Token address we exchange for LP tokens - /// @param amount The tokens amount to be exchanged for LP tokens - /// @param amountOutMinimum The min LP tokens amount to be received from exchange, needed for security reasons - /// @return amountLP Amount of LP tokens - function swapCollectedPenalty(address tokenIn, uint256 amount, uint256 amountOutMinimum) internal returns (uint256 amountLP) { - //uniswap call to exchange given tokens for LP tokens - amountLP = swapExactInputSingle(tokenIn, poolInfo[LOOP_POOL_INDEX].token, uniswapPoolFee, address(this), amount, amountOutMinimum); - } - - /// @notice send LP tokens back to Liquidity Mining available for mining rewards. - /// @dev amount is the LP tokens - /// @param amount LP tokens - function liquidityMining(uint256 amount) internal { - //TODO: ... something else needed like send tokens where? - } - - // Loop Pool - /// @notice adds to the LOOP pool the amount in LOOPhole tokens corresponding to half the penalty for leaving the main pools. - /// @param amount Tokens amount to add to the LOOP pool - function addRewardToLoopPool(uint256 amount) internal { - poolInfo[LOOP_POOL_INDEX].totalDistributedPenalty = poolInfo[LOOP_POOL_INDEX].totalDistributedPenalty.add(amount); - poolInfo[LOOP_POOL_INDEX].totalPool = poolInfo[LOOP_POOL_INDEX].totalPool.add(amount); - } - - /// @notice get blocks range given two block numbers, usually computes blocks elapsed since last mining reward block. - /// @dev RETURN | BLOCK RANGE SINCE LAST REWARD AS REWARD MULTIPLIER | INCLUDES START BLOCK - /// @param from block start - /// @param to block end - /// @return blocks count - function getBlocksFromRange(uint256 from, uint256 to) public view virtual override returns (uint256) { - from = from >= startBlock ? from : startBlock; - return to.sub(from); - } - - /// @notice update all pools for mining rewards - /// @dev UPDATE | (ALL) REWARD VARIABLES | BEWARE: HIGH GAS POTENTIAL - function massUpdatePools() public virtual override { - uint256 length = poolInfo.length; - // only main pools, 0 index is for LOOP pool - for (uint256 pid = 1; pid < length; ++pid) { - _updatePool(pid); - } - } - - /// @notice Update pool to trigger LP tokens reward since last reward mining block - /// @dev UPDATE | (ONE POOL) REWARD VARIABLES - /// @param pid Pool id - /// @return blocksElapsed Blocks elapsed since last reward block - /// @return lpTokensReward Amount of LP tokens reward since last reward block - /// @return accLPtokensPerShare Pool accumulated LP tokens per pool token (per share) - function _updatePool(uint256 pid) internal returns (uint256 blocksElapsed, uint256 lpTokensReward, uint256 accLPtokensPerShare) { - PoolInfo storage pool = poolInfo[pid]; - if (getBlockNumber() <= pool.lastRewardBlock) { - return (0, 0, 0); - } - - uint256 lpSupply = pool.totalPool; - // main pools must have some tokens on this contract except LOOP pool tokens - if (lpSupply == 0) { - uint256 blocksElapsed1 = getBlockNumber() - pool.lastRewardBlock; - pool.lastRewardBlock = getBlockNumber(); - return (blocksElapsed1, 0, 0); - } - - lpTokensReward = getPoolReward(pool); - - // calculate LP tokens per pool token of selected pool id - pool.accLPtokensPerShare = pool.accLPtokensPerShare.add(lpTokensReward.mul(LPtokensPerShareMultiplier).div(lpSupply)); - accLPtokensPerShare = pool.accLPtokensPerShare; - blocksElapsed = getBlockNumber() - pool.lastRewardBlock; - pool.lastRewardBlock = getBlockNumber(); - } - - /// @notice Update pool to trigger LP tokens reward since last reward mining block - /// @dev UPDATE | (ONE POOL) REWARD VARIABLES - /// @param pid Pool id - /// @return blocksElapsed Blocks elapsed since last reward block - /// @return lpTokensReward Amount of LP tokens reward since last reward block - /// @return accLPtokensPerShare Pool accumulated LP tokens per pool token (per share) - function updatePool(uint256 pid) external requireMainPool(pid) requireValidPid(pid) virtual override - returns (uint256 blocksElapsed, uint256 lpTokensReward, uint256 accLPtokensPerShare) - { - return _updatePool(pid); - } - - /// @notice get LP tokens reward for given pool - /// @param pool Pool - /// @return tokensReward Tokens amount as reward based on last mining block - function getPoolReward(PoolInfo storage pool) internal view virtual returns (uint256 tokensReward) { - uint256 blocksElapsed = getBlocksFromRange(pool.lastRewardBlock, getBlockNumber()); - return blocksElapsed.mul(lpTokensPerBlock).mul(pool.allocPoint).div(totalAllocPoint); - } - - /// @notice get LP tokens reward for given pool id, only MAIN pool, LOOP pool reward will always be zero - /// @param pid Pool id - /// @return tokensReward Tokens amount as reward based on last mining block - function getPoolReward(uint256 pid) requireValidPid(pid) external view virtual override returns (uint256 tokensReward) { - PoolInfo storage pool = poolInfo[pid]; - return getPoolReward(pool); - } - - /// @notice Check if given pool id is MAIN pool id - /// @param pid Pool id - /// @return true if given pool id is MAIN pool id - function isMainPoolId(uint256 pid) private pure returns (bool) { - return (pid != LOOP_POOL_INDEX); - } - - /// @notice get current block timestamp - /// @return current block timestamp - function getBlockTimestamp() public view virtual override returns (uint256) { - return block.timestamp; - } - - /// @notice get current block number - /// @return current block number - function getBlockNumber() public view virtual override returns (uint256) { - return block.number; - } - - /// @notice Get pool attributes - /// @param pid Pool id - /// @return token - /// @return allocPoint - /// @return lastRewardBlock - /// @return totalPool - /// @return entryStakeTotal - /// @return totalDistributedPenalty - /// @return accLPtokensPerShare - /// All pool attributes - function getPool(uint256 pid) requireValidPid(pid) external view virtual override returns ( - address token, uint256 allocPoint, uint256 lastRewardBlock, uint256 totalPool, - uint256 entryStakeTotal, uint256 totalDistributedPenalty, uint256 accLPtokensPerShare) - { - PoolInfo storage p = poolInfo[pid]; - return (p.token, p.allocPoint, p.lastRewardBlock, p.totalPool, - p.entryStakeTotal, p.totalDistributedPenalty, p.accLPtokensPerShare); - } - - /// @notice Get pool attributes as struct - /// @param pid Pool id - /// @return pool - function getPoolInfo(uint256 pid) requireValidPid(pid) external view virtual override returns (PoolInfo memory pool) - { - PoolInfo storage p = poolInfo[pid]; - return (p); - } - - /// @notice Get pools array length - /// @return pools count - function poolsCount() external view virtual override returns (uint256) { - return poolInfo.length; - } - - /// @notice Get pool attributes as struct - /// @param pid Pool id - /// @param user User address - /// @return user info - function getUserInfo(uint256 pid, address user) - requireValidPid(pid) - external view virtual override returns (UserInfo memory) - { - UserInfo storage userData = userInfo[pid][user]; - return (userData); - } - - /// @notice Get total accumulated 'entry stake' so far for a given user address in a pool id - /// @param pid Pool id - /// @param user User address - /// @return user entry stake amount in a given pool - function getTotalEntryStakeUser(uint256 pid, address user) external view virtual override returns (uint256) { - return userInfo[pid][user].entryStake; - } - - /// @notice Get total accumulated 'unstake' so far for a given user address in a pool id - /// @param pid Pool id - /// @param user User address - /// @return user unstake amount in a given pool - function getTotalUnstakeUser(uint256 pid, address user) external view virtual override returns (uint256) { - return userInfo[pid][user].unstake; - } - - /// @notice Get 'entry stake adjusted' for a given user address in a pool id - /// @param pid Pool id - /// @param user User address - /// @return user entry stake adjusted amount in given pool - function getEntryStakeAdjusted(uint256 pid, address user) external view virtual override returns (uint256) { - return userInfo[pid][user].entryStakeAdjusted; - } -} diff --git a/contracts/lifecycle/PausableWithoutRenounce.sol b/contracts/lifecycle/PausableWithoutRenounce.sol deleted file mode 100644 index 3ecca1eb..00000000 --- a/contracts/lifecycle/PausableWithoutRenounce.sol +++ /dev/null @@ -1,77 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/GSN/Context.sol"; -import "@openzeppelin/contracts/proxy/Initializable.sol"; -import "./PauserRoleWithoutRenounce.sol"; - -/** - * @title PausableWithoutRenounce - * @author Sablier - * @notice Fork of OpenZeppelin's Pausable, a contract module which allows children to implement an - * emergency stop mechanism that can be triggered by an authorized account, but with the `renouncePauser` - * function removed to avoid fat-finger errors. - * We inherit from `Context` to keep this contract compatible with the Gas Station Network. - * See https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package/blob/master/contracts/lifecycle/Pausable.sol - * See https://docs.openzeppelin.com/contracts/2.x/gsn#_msg_sender_and_msg_data - */ -contract PausableWithoutRenounce is Initializable, Context, PauserRoleWithoutRenounce { - /** - * @dev Emitted when the pause is triggered by a pauser (`account`). - */ - event Paused(address account); - - /** - * @dev Emitted when the pause is lifted by a pauser (`account`). - */ - event Unpaused(address account); - - bool private _paused; - - /** - * @dev Initializes the contract in unpaused state. Assigns the Pauser role - * to the deployer. - */ - function initialize(address sender) public override initializer { - PauserRoleWithoutRenounce.initialize(sender); - _paused = false; - } - - /** - * @dev Returns true if the contract is paused, and false otherwise. - */ - function paused() public view returns (bool) { - return _paused; - } - - /** - * @dev Modifier to make a function callable only when the contract is not paused. - */ - modifier whenNotPaused() { - require(!_paused, "Pausable: paused"); - _; - } - - /** - * @dev Modifier to make a function callable only when the contract is paused. - */ - modifier whenPaused() { - require(_paused, "Pausable: not paused"); - _; - } - - /** - * @dev Called by a pauser to pause, triggers paused state. - */ - function pause() public onlyPauser whenNotPaused { - _paused = true; - emit Paused(_msgSender()); - } - - /** - * @dev Called by a pauser to unpause, returns to normal state. - */ - function unpause() public onlyPauser whenPaused { - _paused = false; - emit Unpaused(_msgSender()); - } -} diff --git a/contracts/lifecycle/PauserRoleWithoutRenounce.sol b/contracts/lifecycle/PauserRoleWithoutRenounce.sol deleted file mode 100644 index 6f172467..00000000 --- a/contracts/lifecycle/PauserRoleWithoutRenounce.sol +++ /dev/null @@ -1,53 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/GSN/Context.sol"; -import "@openzeppelin/contracts/proxy/Initializable.sol"; -import "./Roles.sol"; - -/** - * @title PauserRoleWithoutRenounce - * @author Sablier - * @notice Fork of OpenZeppelin's PauserRole, but with the `renouncePauser` function removed to avoid fat-finger errors. - * We inherit from `Context` to keep this contract compatible with the Gas Station Network. - * See https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package/blob/master/contracts/access/roles/PauserRole.sol - */ - -contract PauserRoleWithoutRenounce is Initializable, Context { - using Roles for Roles.Role; - - event PauserAdded(address indexed account); - event PauserRemoved(address indexed account); - - Roles.Role private _pausers; - - function initialize(address sender) public virtual initializer { - if (!isPauser(sender)) { - _addPauser(sender); - } - } - - modifier onlyPauser() { - require(isPauser(_msgSender()), "PauserRole: caller does not have the Pauser role"); - _; - } - - function isPauser(address account) public view returns (bool) { - return _pausers.has(account); - } - - function addPauser(address account) public onlyPauser { - _addPauser(account); - } - - function _addPauser(address account) internal { - _pausers.add(account); - emit PauserAdded(account); - } - - function _removePauser(address account) internal { - _pausers.remove(account); - emit PauserRemoved(account); - } - - uint256[50] private ______gap; -} diff --git a/contracts/lifecycle/Roles.sol b/contracts/lifecycle/Roles.sol deleted file mode 100644 index 80cb9a74..00000000 --- a/contracts/lifecycle/Roles.sol +++ /dev/null @@ -1,41 +0,0 @@ -pragma solidity >=0.6.0; - -/** - * @title Roles - * @dev Library for managing addresses assigned to a Role. - * @notice Based on file "https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package/blob/master/contracts/access/Roles.sol" - */ -library Roles { - struct Role { - mapping (address => bool) bearer; - } - - /** - * @dev give an account access to this role - */ - function add(Role storage role, address account) internal { - require(account != address(0)); - require(!has(role, account)); - - role.bearer[account] = true; - } - - /** - * @dev remove an account's access to this role - */ - function remove(Role storage role, address account) internal { - require(account != address(0)); - require(has(role, account)); - - role.bearer[account] = false; - } - - /** - * @dev check if an account has this role - * @return bool - */ - function has(Role storage role, address account) internal view returns (bool) { - require(account != address(0)); - return role.bearer[account]; - } -} diff --git a/contracts/math/SafePercentMath.sol b/contracts/math/SafePercentMath.sol deleted file mode 100644 index 816419f3..00000000 --- a/contracts/math/SafePercentMath.sol +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity >=0.6.0 <0.8.0; - -import "@openzeppelin/contracts/math/SafeMath.sol"; - -/// @title Library for calculating percentages like parts/total for example 35/10000 for 0.35%. -/// @dev Percentages math utilities. -library SafePercentMath { - using SafeMath for uint256; - - /// @dev Calculate percent as parts 'parts' per X amount 'perX' from given number 'amount' - /// @param amount Amount to calculate percent for - /// @param parts Parts of the percent e.g. (7) parts per 1000. - /// @param perX Per X amount of the percent, like 7 parts per (1000) perX. - /// @return p percent amount tokens - function percent(uint256 amount, uint256 parts, uint256 perX) internal pure returns (uint256 p) { - require(perX > 0, "SafeMathLib.percent: required perX > 0"); - if (amount == 0) - return 0; - - uint c = amount * parts; - bool mulOverflow = (parts > 0 && c / amount != parts); - - // if mulOverflow, we do the division first instead of the multiplication - // as we have the formula for percentage: percent = amount * parts / perX; - if (mulOverflow) - p = amount.div(perX).mul(parts); - else p = amount.mul(parts).div(perX); - } -} diff --git a/contracts/math/SaferMath.sol b/contracts/math/SaferMath.sol deleted file mode 100644 index e7e3d820..00000000 --- a/contracts/math/SaferMath.sol +++ /dev/null @@ -1,94 +0,0 @@ -pragma solidity >=0.6.0 <0.8.0; - - -library SaferMath { - enum Rounding { - Down, // Toward negative infinity - Up, // Toward infinity - Zero // Toward zero - } - - function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) { - // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use - // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 - // variables such that product = prod1 * 2^256 + prod0. - uint256 prod0; // Least significant 256 bits of the product - uint256 prod1; // Most significant 256 bits of the product - assembly { - let mm := mulmod(x, y, not(0)) - prod0 := mul(x, y) - prod1 := sub(sub(mm, prod0), lt(mm, prod0)) - } - - // Handle non-overflow cases, 256 by 256 division. - if (prod1 == 0) { - return prod0 / denominator; - } - - // Make sure the result is less than 2^256. Also prevents denominator == 0. - require(denominator > prod1, "Math: mulDiv overflow"); - - /////////////////////////////////////////////// - // 512 by 256 division. - /////////////////////////////////////////////// - - // Make division exact by subtracting the remainder from [prod1 prod0]. - uint256 remainder; - assembly { - // Compute remainder using mulmod. - remainder := mulmod(x, y, denominator) - - // Subtract 256 bit number from 512 bit number. - prod1 := sub(prod1, gt(remainder, prod0)) - prod0 := sub(prod0, remainder) - } - - // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1. - // See https://cs.stackexchange.com/q/138556/92363. - - // Does not overflow because the denominator cannot be zero at this stage in the function. - uint256 twos = denominator & (~denominator + 1); - assembly { - // Divide denominator by twos. - denominator := div(denominator, twos) - - // Divide [prod1 prod0] by twos. - prod0 := div(prod0, twos) - - // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one. - twos := add(div(sub(0, twos), twos), 1) - } - - // Shift in bits from prod1 into prod0. - prod0 |= prod1 * twos; - - // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such - // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for - // four bits. That is, denominator * inv = 1 mod 2^4. - uint256 inverse = (3 * denominator) ^ 2; - - // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works - // in modular arithmetic, doubling the correct bits in each step. - inverse *= 2 - denominator * inverse; // inverse mod 2^8 - inverse *= 2 - denominator * inverse; // inverse mod 2^16 - inverse *= 2 - denominator * inverse; // inverse mod 2^32 - inverse *= 2 - denominator * inverse; // inverse mod 2^64 - inverse *= 2 - denominator * inverse; // inverse mod 2^128 - inverse *= 2 - denominator * inverse; // inverse mod 2^256 - - // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. - // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is - // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1 - // is no longer required. - result = prod0 * inverse; - return result; - } - - function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) { - uint256 result = mulDiv(x, y, denominator); - if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) { - result += 1; - } - return result; - } -} \ No newline at end of file diff --git a/contracts/mocks/ERC20Mock.sol b/contracts/mocks/ERC20Mock.sol deleted file mode 100644 index 2c891498..00000000 --- a/contracts/mocks/ERC20Mock.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - -/** - * @title ERC20 Mock - * @dev Mock class using ERC20 - * based on Sablier's ERC20Mock contract - */ -contract ERC20Mock is ERC20 { - - constructor() public ERC20("ERC20Mock", "erc20mock") { - } - - /** - * @dev Allows anyone to mint tokens to any address - * @param to The address that will receive the minted tokens. - * @param amount The amount of tokens to mint. - */ - function mint(address to, uint256 amount) public { - _mint(to, amount); - } -} diff --git a/contracts/sablier/LICENSE.md b/contracts/sablier/LICENSE.md deleted file mode 100644 index 4af7c410..00000000 --- a/contracts/sablier/LICENSE.md +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - -Copyright (C) 2019-2020 Sablier -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The GNU General Public License is a free, copyleft license for -software and other kinds of works. - -The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - -Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - -Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - -0. Definitions. - -"This License" refers to version 3 of the GNU General Public License. - -"Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - -"The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - -To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - -A "covered work" means either the unmodified Program or a work based -on the Program. - -To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - -To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - -1. Source Code. - -The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - -A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - -The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - -The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - -The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - -The Corresponding Source for a work in source code form is that -same work. - -2. Basic Permissions. - -All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - -When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - -4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - -A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - -6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - -A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - -"Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - -If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - -The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - -7. Additional Terms. - -"Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - -All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - -8. Termination. - -You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - -However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - -Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - -An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - -11. Patents. - -A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - -A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - -In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - -If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - -A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - -Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and`show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - -You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - -The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/contracts/sablier/protocol/Sablier.sol b/contracts/sablier/protocol/Sablier.sol deleted file mode 100644 index 6bc7e359..00000000 --- a/contracts/sablier/protocol/Sablier.sol +++ /dev/null @@ -1,842 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; - -import "../shared-contracts/compound/Exponential.sol"; -import "../shared-contracts/interfaces/ICERC20.sol"; -import "../../lifecycle/PausableWithoutRenounce.sol"; -import "../../utils/Ownable.sol"; - -import "./interfaces/IERC1620.sol"; -import "./Types.sol"; -import "../../IERC20View.sol"; - -/** - * @title Sablier's Money Streaming - * @author Sablier - */ -contract Sablier is IERC1620, Ownable, PausableWithoutRenounce, Exponential, ReentrancyGuard { - /*** Storage Properties ***/ - - // In Exp terms, 1e18 is 1, or 100% - uint256 constant hundredPercent = 1e18; - - // In Exp terms, 1e16 is 0.01, or 1% - uint256 constant onePercent = 1e16; - - // Stores information about the initial state of the underlying of the cToken. - mapping(uint256 => Types.CompoundingStreamVars) private compoundingStreamsVars; - - // The amount of interest has been accrued per token address. - mapping(address => uint256) private earnings; - - /** - * @notice The percentage fee charged by the contract on the accrued interest. - */ - Exp public fee; - - /** - * @notice Counter for new stream ids. - */ - uint256 public nextStreamId; - - // The stream objects identifiable by their unsigned integer ids. - mapping(uint256 => Types.Stream) private streams; - - /*** Events ***/ - - /** - * @notice Emits when a compounding stream is successfully created. - */ - event CreateCompoundingStream( - uint256 indexed streamId, - uint256 exchangeRate, - uint256 senderSharePercentage, - uint256 recipientSharePercentage - ); - - /** - * @notice Emits when the owner discards a cToken. - */ - event PayInterest( - uint256 indexed streamId, - uint256 senderInterest, - uint256 recipientInterest, - uint256 sablierInterest - ); - - /** - * @notice Emits when the owner takes the earnings. - */ - event TakeEarnings(address indexed tokenAddress, uint256 indexed amount); - - /** - * @notice Emits when the owner updates the percentage fee. - */ - event UpdateFee(uint256 indexed fee); - - /*** Modifiers ***/ - - /** - * @dev Throws if the caller is not the sender of the recipient of the stream. - */ - modifier onlySenderOrRecipient(uint256 streamId) { - require( - msg.sender == streams[streamId].sender || msg.sender == streams[streamId].recipient, - "caller is not the sender or the recipient of the stream" - ); - _; - } - - /** - * @dev Throws if the provided id does not point to a valid stream. - */ - modifier streamExists(uint256 streamId) { - require(streams[streamId].isEntity, "stream does not exist"); - _; - } - - /** - * @dev Throws if the provided id does not point to a valid compounding stream. - */ - modifier compoundingStreamExists(uint256 streamId) { - require(compoundingStreamsVars[streamId].isEntity, "compounding stream does not exist"); - _; - } - - /*** Contract Logic Starts Here */ - - constructor() public { - PausableWithoutRenounce.initialize(msg.sender); - nextStreamId = 1; - } - - /*** Owner Functions ***/ - - struct UpdateFeeLocalVars { - MathError mathErr; - uint256 feeMantissa; - } - - /** - * @notice Updates the Sablier fee. - * @dev Throws if the caller is not the owner of the contract. - * Throws if `feePercentage` is not lower or equal to 100. - * @param feePercentage The new fee as a percentage. - */ - function updateFee(uint256 feePercentage) external onlyOwner { - require(feePercentage <= 100, "fee percentage higher than 100%"); - UpdateFeeLocalVars memory vars; - - /* `feePercentage` will be stored as a mantissa, so we scale it up by one percent in Exp terms. */ - (vars.mathErr, vars.feeMantissa) = mulUInt(feePercentage, onePercent); - /* - * `mulUInt` can only return MathError.INTEGER_OVERFLOW but we control `onePercent` - * and we know `feePercentage` is maximum 100. - */ - assert(vars.mathErr == MathError.NO_ERROR); - - fee = Exp({ mantissa: vars.feeMantissa }); - emit UpdateFee(feePercentage); - } - - struct TakeEarningsLocalVars { - MathError mathErr; - } - - /** - * @notice Withdraws the earnings for the given token address. - * @dev Throws if `amount` exceeds the available balance. - * @param tokenAddress The address of the token to withdraw earnings for. - * @param amount The amount of tokens to withdraw. - */ - function takeEarnings(address tokenAddress, uint256 amount) external onlyOwner nonReentrant { - require(amount > 0, "amount is zero"); - require(earnings[tokenAddress] >= amount, "amount exceeds the available balance"); - - TakeEarningsLocalVars memory vars; - (vars.mathErr, earnings[tokenAddress]) = subUInt(earnings[tokenAddress], amount); - /* - * `subUInt` can only return MathError.INTEGER_UNDERFLOW but we know `earnings[tokenAddress]` - * is at least as big as `amount`. - */ - assert(vars.mathErr == MathError.NO_ERROR); - - emit TakeEarnings(tokenAddress, amount); - require(IERC20(tokenAddress).transfer(msg.sender, amount), "token transfer failure"); - } - - /*** View Functions ***/ - - /** - * @notice Returns the compounding stream with all its properties. - * @dev Throws if the id does not point to a valid stream. - * @param streamId The id of the stream to query. - * @return sender recipient deposit tokenAddress startTime stopTime remainingBalance ratePerSecond The stream object. - */ - function getStream(uint256 streamId) - external - view - override - streamExists(streamId) - returns ( - address sender, - address recipient, - uint256 deposit, - address tokenAddress, - uint256 startTime, - uint256 stopTime, - uint256 remainingBalance, - uint256 ratePerSecond - ) - { - sender = streams[streamId].sender; - recipient = streams[streamId].recipient; - deposit = streams[streamId].deposit; - tokenAddress = streams[streamId].tokenAddress; - startTime = streams[streamId].startTime; - stopTime = streams[streamId].stopTime; - remainingBalance = streams[streamId].remainingBalance; - ratePerSecond = streams[streamId].ratePerSecond; - } - - /** - * @notice Returns either the delta in seconds between `block.timestamp` and `startTime` or - * between `stopTime` and `startTime, whichever is smaller. If `block.timestamp` is before - * `startTime`, it returns 0. - * @dev Throws if the id does not point to a valid stream. - * @param streamId The id of the stream for which to query the delta. - * @return delta The time delta in seconds. - */ - function deltaOf(uint256 streamId) public view streamExists(streamId) returns (uint256 delta) { - Types.Stream memory stream = streams[streamId]; - if (block.timestamp <= stream.startTime) return 0; - if (block.timestamp < stream.stopTime) return block.timestamp - stream.startTime; - return stream.stopTime - stream.startTime; - } - - struct BalanceOfLocalVars { - MathError mathErr; - uint256 recipientBalance; - uint256 withdrawalAmount; - uint256 senderBalance; - } - - /** - * @notice Returns the available funds for the given stream id and address. - * @dev Throws if the id does not point to a valid stream. - * @param streamId The id of the stream for which to query the balance. - * @param who The address for which to query the balance. - * @return balance The total funds allocated to `who` as uint256. - */ - function balanceOf(uint256 streamId, address who) public view override streamExists(streamId) returns (uint256 balance) { - Types.Stream memory stream = streams[streamId]; - BalanceOfLocalVars memory vars; - - uint256 delta = deltaOf(streamId); - (vars.mathErr, vars.recipientBalance) = mulUInt(delta, stream.ratePerSecond); - require(vars.mathErr == MathError.NO_ERROR, "recipient balance calculation error"); - - /* - * If the stream `balance` does not equal `deposit`, it means there have been withdrawals. - * We have to subtract the total amount withdrawn from the amount of money that has been - * streamed until now. - */ - if (stream.deposit > stream.remainingBalance) { - (vars.mathErr, vars.withdrawalAmount) = subUInt(stream.deposit, stream.remainingBalance); - assert(vars.mathErr == MathError.NO_ERROR); - (vars.mathErr, vars.recipientBalance) = subUInt(vars.recipientBalance, vars.withdrawalAmount); - /* `withdrawalAmount` cannot and should not be bigger than `recipientBalance`. */ - assert(vars.mathErr == MathError.NO_ERROR); - } - - if (who == stream.recipient) return vars.recipientBalance; - if (who == stream.sender) { - (vars.mathErr, vars.senderBalance) = subUInt(stream.remainingBalance, vars.recipientBalance); - /* `recipientBalance` cannot and should not be bigger than `remainingBalance`. */ - assert(vars.mathErr == MathError.NO_ERROR); - return vars.senderBalance; - } - return 0; - } - - /** - * @notice Checks if the provided id points to a valid compounding stream. - * @param streamId The id of the compounding stream to check. - * @return bool true=if it is a compounding stream, otherwise false. - */ - function isCompoundingStream(uint256 streamId) public view returns (bool) { - return compoundingStreamsVars[streamId].isEntity; - } - - /** - * @notice Returns the compounding stream object with all its properties. - * @dev Throws if the id does not point to a valid compounding stream. - * @param streamId The id of the compounding stream to query. - * @return sender recipient deposit tokenAddress startTime stopTime remainingBalance ratePerSecond exchangeRateInitial senderSharePercentage recipientSharePercentage The compounding stream object. - */ - function getCompoundingStream(uint256 streamId) - external - view - streamExists(streamId) - compoundingStreamExists(streamId) - returns ( - address sender, - address recipient, - uint256 deposit, - address tokenAddress, - uint256 startTime, - uint256 stopTime, - uint256 remainingBalance, - uint256 ratePerSecond, - uint256 exchangeRateInitial, - uint256 senderSharePercentage, - uint256 recipientSharePercentage - ) - { - sender = streams[streamId].sender; - recipient = streams[streamId].recipient; - deposit = streams[streamId].deposit; - tokenAddress = streams[streamId].tokenAddress; - startTime = streams[streamId].startTime; - stopTime = streams[streamId].stopTime; - remainingBalance = streams[streamId].remainingBalance; - ratePerSecond = streams[streamId].ratePerSecond; - exchangeRateInitial = compoundingStreamsVars[streamId].exchangeRateInitial.mantissa; - senderSharePercentage = compoundingStreamsVars[streamId].senderShare.mantissa; - recipientSharePercentage = compoundingStreamsVars[streamId].recipientShare.mantissa; - } - - struct InterestOfLocalVars { - MathError mathErr; - Exp exchangeRateDelta; - Exp underlyingInterest; - Exp netUnderlyingInterest; - Exp senderUnderlyingInterest; - Exp recipientUnderlyingInterest; - Exp sablierUnderlyingInterest; - Exp senderInterest; - Exp recipientInterest; - Exp sablierInterest; - } - - /** - * @notice Computes the interest accrued while the money has been streamed. Returns (0, 0, 0) if - * the stream is either not a compounding stream or it does not exist. - * @dev Throws if there is a math error. We do not assert the calculations which involve the current - * exchange rate, because we can't know what value we'll get back from the cToken contract. - * @param streamId The id of the compounding stream for which to calculate the interest. - * @param amount The amount of money with respect to which to calculate the interest. - * @return senderInterest recipientInterest sablierInterest The interest accrued by the sender, the recipient and sablier, respectively, as uint256s. - */ - function interestOf(uint256 streamId, uint256 amount) - public - streamExists(streamId) - returns (uint256 senderInterest, uint256 recipientInterest, uint256 sablierInterest) - { - if (!compoundingStreamsVars[streamId].isEntity) { - return (0, 0, 0); - } - Types.Stream memory stream = streams[streamId]; - Types.CompoundingStreamVars memory compoundingStreamVars = compoundingStreamsVars[streamId]; - InterestOfLocalVars memory vars; - - /* - * The exchange rate delta is a key variable, since it leads us to how much interest has been earned - * since the compounding stream was created. - */ - Exp memory exchangeRateCurrent = Exp({ mantissa: ICERC20(stream.tokenAddress).exchangeRateCurrent() }); - if (exchangeRateCurrent.mantissa <= compoundingStreamVars.exchangeRateInitial.mantissa) { - return (0, 0, 0); - } - (vars.mathErr, vars.exchangeRateDelta) = subExp(exchangeRateCurrent, compoundingStreamVars.exchangeRateInitial); - assert(vars.mathErr == MathError.NO_ERROR); - - /* Calculate how much interest has been earned by holding `amount` in the smart contract. */ - (vars.mathErr, vars.underlyingInterest) = mulScalar(vars.exchangeRateDelta, amount); - require(vars.mathErr == MathError.NO_ERROR, "interest calculation error"); - - /* Calculate our share from that interest. */ - if (fee.mantissa == hundredPercent) { - (vars.mathErr, vars.sablierInterest) = divExp(vars.underlyingInterest, exchangeRateCurrent); - require(vars.mathErr == MathError.NO_ERROR, "sablier interest conversion error"); - return (0, 0, truncate(vars.sablierInterest)); - } else if (fee.mantissa == 0) { - vars.sablierUnderlyingInterest = Exp({ mantissa: 0 }); - vars.netUnderlyingInterest = vars.underlyingInterest; - } else { - (vars.mathErr, vars.sablierUnderlyingInterest) = mulExp(vars.underlyingInterest, fee); - require(vars.mathErr == MathError.NO_ERROR, "sablier interest calculation error"); - - /* Calculate how much interest is left for the sender and the recipient. */ - (vars.mathErr, vars.netUnderlyingInterest) = subExp( - vars.underlyingInterest, - vars.sablierUnderlyingInterest - ); - /* - * `subUInt` can only return MathError.INTEGER_UNDERFLOW but we know that `sablierUnderlyingInterest` - * is less or equal than `underlyingInterest`, because we control the value of `fee`. - */ - assert(vars.mathErr == MathError.NO_ERROR); - } - - /* Calculate the sender's share of the interest. */ - (vars.mathErr, vars.senderUnderlyingInterest) = mulExp( - vars.netUnderlyingInterest, - compoundingStreamVars.senderShare - ); - require(vars.mathErr == MathError.NO_ERROR, "sender interest calculation error"); - - /* Calculate the recipient's share of the interest. */ - (vars.mathErr, vars.recipientUnderlyingInterest) = subExp( - vars.netUnderlyingInterest, - vars.senderUnderlyingInterest - ); - /* - * `subUInt` can only return MathError.INTEGER_UNDERFLOW but we know that `senderUnderlyingInterest` - * is less or equal than `netUnderlyingInterest`, because `senderShare` is bounded between 1e16 and 1e18. - */ - assert(vars.mathErr == MathError.NO_ERROR); - - /* Convert the interest to the equivalent cToken denomination. */ - (vars.mathErr, vars.senderInterest) = divExp(vars.senderUnderlyingInterest, exchangeRateCurrent); - require(vars.mathErr == MathError.NO_ERROR, "sender interest conversion error"); - - (vars.mathErr, vars.recipientInterest) = divExp(vars.recipientUnderlyingInterest, exchangeRateCurrent); - require(vars.mathErr == MathError.NO_ERROR, "recipient interest conversion error"); - - (vars.mathErr, vars.sablierInterest) = divExp(vars.sablierUnderlyingInterest, exchangeRateCurrent); - require(vars.mathErr == MathError.NO_ERROR, "sablier interest conversion error"); - - /* Truncating the results means losing everything on the last 1e18 positions of the mantissa */ - return (truncate(vars.senderInterest), truncate(vars.recipientInterest), truncate(vars.sablierInterest)); - } - - /** - * @notice Returns the amount of interest that has been accrued for the given token address. - * @param tokenAddress The address of the token to get the earnings for. - * @return The amount of interest as uint256. - */ - function getEarnings(address tokenAddress) external view returns (uint256) { - return earnings[tokenAddress]; - } - - /*** Public Effects & Interactions Functions ***/ - - struct CreateStreamLocalVars { - MathError mathErr; - uint256 duration; - uint256 ratePerSecond; - } - - /** - * @notice Creates a new stream funded by `msg.sender` and paid towards `recipient`. - * @dev Throws if paused. - * Throws if the recipient is the zero address, the contract itself or the caller. - * Throws if the deposit is 0. - * Throws if the start time is before `block.timestamp`. - * Throws if the stop time is before the start time. - * Throws if the duration calculation has a math error. - * Throws if the deposit is smaller than the duration. - * Throws if the deposit is not a multiple of the duration. - * Throws if the rate calculation has a math error. - * Throws if the next stream id calculation has a math error. - * Throws if the contract is not allowed to transfer enough tokens. - * Throws if there is a token transfer failure. - * @param recipient The address towards which the money is streamed. - * @param deposit The amount of money to be streamed. - * @param tokenAddress The ERC20 token to use as streaming currency. - * @param startTime The unix timestamp for when the stream starts. - * @param stopTime The unix timestamp for when the stream stops. - * @return The uint256 id of the newly created stream. - */ - function createStream(address recipient, uint256 deposit, address tokenAddress, uint256 startTime, uint256 stopTime) - public - override - whenNotPaused - returns (uint256) - { - require(recipient != address(0x00), "stream to the zero address"); - require(recipient != address(this), "stream to the contract itself"); - require(recipient != msg.sender, "stream to the caller"); - require(deposit > 0, "deposit is zero"); - require(startTime >= block.timestamp, "start time before block.timestamp"); - require(stopTime > startTime, "stop time before the start time"); - - CreateStreamLocalVars memory vars; - (vars.mathErr, vars.duration) = subUInt(stopTime, startTime); - /* `subUInt` can only return MathError.INTEGER_UNDERFLOW but we know `stopTime` is higher than `startTime`. */ - assert(vars.mathErr == MathError.NO_ERROR); - - /* Without this, the rate per second would be zero. */ - require(deposit >= vars.duration, "deposit smaller than time delta"); - - /* This condition avoids dealing with remainders */ - require(deposit % vars.duration == 0, "deposit not multiple of time delta"); - - (vars.mathErr, vars.ratePerSecond) = divUInt(deposit, vars.duration); - /* `divUInt` can only return MathError.DIVISION_BY_ZERO but we know `duration` is not zero. */ - assert(vars.mathErr == MathError.NO_ERROR); - - /* Create and store the stream object. */ - uint256 streamId = nextStreamId; - streams[streamId] = Types.Stream({ - remainingBalance: deposit, - deposit: deposit, - isEntity: true, - ratePerSecond: vars.ratePerSecond, - recipient: recipient, - sender: msg.sender, - startTime: startTime, - stopTime: stopTime, - tokenAddress: tokenAddress - }); - - /* Increment the next stream id. */ - (vars.mathErr, nextStreamId) = addUInt(nextStreamId, uint256(1)); - require(vars.mathErr == MathError.NO_ERROR, "next stream id calculation error"); - - require(IERC20(tokenAddress).transferFrom(msg.sender, address(this), deposit), "token transfer failure"); - emit CreateStream(streamId, msg.sender, recipient, deposit, tokenAddress, startTime, stopTime); - return streamId; - } - - struct CreateCompoundingStreamLocalVars { - MathError mathErr; - uint256 shareSum; - uint256 underlyingBalance; - uint256 senderShareMantissa; - uint256 recipientShareMantissa; - } - - /** - * @notice Creates a new compounding stream funded by `msg.sender` and paid towards `recipient`. - * @dev Inherits all security checks from `createStream`. - * Throws if the cToken is not whitelisted. - * Throws if the sender share percentage and the recipient share percentage do not sum up to 100. - * Throws if the the sender share mantissa calculation has a math error. - * Throws if the the recipient share mantissa calculation has a math error. - * @param recipient The address towards which the money is streamed. - * @param deposit The amount of money to be streamed. - * @param tokenAddress The ERC20 token to use as streaming currency. - * @param startTime The unix timestamp for when the stream starts. - * @param stopTime The unix timestamp for when the stream stops. - * @param senderSharePercentage The sender's share of the interest, as a percentage. - * @param recipientSharePercentage The recipient's share of the interest, as a percentage. - * @return The uint256 id of the newly created compounding stream. - */ - function createCompoundingStream( - address recipient, - uint256 deposit, - address tokenAddress, - uint256 startTime, - uint256 stopTime, - uint256 senderSharePercentage, - uint256 recipientSharePercentage - ) external whenNotPaused returns (uint256) { - CreateCompoundingStreamLocalVars memory vars; - - /* Ensure that the interest shares sum up to 100%. */ - (vars.mathErr, vars.shareSum) = addUInt(senderSharePercentage, recipientSharePercentage); - require(vars.mathErr == MathError.NO_ERROR, "share sum calculation error"); - require(vars.shareSum == 100, "shares do not sum up to 100"); - - uint256 streamId = createStream(recipient, deposit, tokenAddress, startTime, stopTime); - - /* - * `senderSharePercentage` and `recipientSharePercentage` will be stored as mantissas, so we scale them up - * by one percent in Exp terms. - */ - (vars.mathErr, vars.senderShareMantissa) = mulUInt(senderSharePercentage, onePercent); - /* - * `mulUInt` can only return MathError.INTEGER_OVERFLOW but we control `onePercent` and - * we know `senderSharePercentage` is maximum 100. - */ - assert(vars.mathErr == MathError.NO_ERROR); - - (vars.mathErr, vars.recipientShareMantissa) = mulUInt(recipientSharePercentage, onePercent); - /* - * `mulUInt` can only return MathError.INTEGER_OVERFLOW but we control `onePercent` and - * we know `recipientSharePercentage` is maximum 100. - */ - assert(vars.mathErr == MathError.NO_ERROR); - - /* Create and store the compounding stream vars. */ - uint256 exchangeRateCurrent = ICERC20(tokenAddress).exchangeRateCurrent(); - compoundingStreamsVars[streamId] = Types.CompoundingStreamVars({ - exchangeRateInitial: Exp({ mantissa: exchangeRateCurrent }), - isEntity: true, - recipientShare: Exp({ mantissa: vars.recipientShareMantissa }), - senderShare: Exp({ mantissa: vars.senderShareMantissa }) - }); - - emit CreateCompoundingStream(streamId, exchangeRateCurrent, senderSharePercentage, recipientSharePercentage); - return streamId; - } - - /** - * @notice Withdraws from the contract to the recipient's account. - * @dev Throws if the id does not point to a valid stream. - * Throws if the caller is not the sender or the recipient of the stream. - * Throws if the amount exceeds the available balance. - * Throws if there is a token transfer failure. - * @param streamId The id of the stream to withdraw tokens from. - * @param amount The amount of tokens to withdraw. - * @return bool true=success, otherwise false. - */ - function withdrawFromStream(uint256 streamId, uint256 amount) - external - override - whenNotPaused - nonReentrant - streamExists(streamId) - onlySenderOrRecipient(streamId) - returns (bool) - { - require(amount > 0, "amount is zero"); - Types.Stream memory stream = streams[streamId]; - uint256 balance = balanceOf(streamId, stream.recipient); - require(balance >= amount, "amount exceeds the available balance"); - - if (!compoundingStreamsVars[streamId].isEntity) { - withdrawFromStreamInternal(streamId, amount); - } else { - withdrawFromCompoundingStreamInternal(streamId, amount); - } - return true; - } - - /** - * @notice Cancels the stream and transfers the tokens back on a pro rata basis. - * @dev Throws if the id does not point to a valid stream. - * Throws if the caller is not the sender or the recipient of the stream. - * Throws if there is a token transfer failure. - * @param streamId The id of the stream to cancel. - * @return bool true=success, otherwise false. - */ - function cancelStream(uint256 streamId) - external - override - nonReentrant - streamExists(streamId) - onlySenderOrRecipient(streamId) - returns (bool) - { - if (!compoundingStreamsVars[streamId].isEntity) { - cancelStreamInternal(streamId); - } else { - cancelCompoundingStreamInternal(streamId); - } - return true; - } - - /*** Internal Effects & Interactions Functions ***/ - - struct WithdrawFromStreamInternalLocalVars { - MathError mathErr; - } - - /** - * @notice Makes the withdrawal to the recipient of the stream. - * @dev If the stream balance has been depleted to 0, the stream object is deleted - * to save gas and optimise contract storage. - * Throws if the stream balance calculation has a math error. - * Throws if there is a token transfer failure. - * @param streamId The id of the stream to withdraw from. - * @param amount Withdraw tokens amount. - */ - function withdrawFromStreamInternal(uint256 streamId, uint256 amount) internal { - Types.Stream memory stream = streams[streamId]; - WithdrawFromStreamInternalLocalVars memory vars; - (vars.mathErr, streams[streamId].remainingBalance) = subUInt(stream.remainingBalance, amount); - /** - * `subUInt` can only return MathError.INTEGER_UNDERFLOW but we know that `remainingBalance` is at least - * as big as `amount`. See the `require` check in `withdrawFromInternal`. - */ - assert(vars.mathErr == MathError.NO_ERROR); - - if (streams[streamId].remainingBalance == 0) delete streams[streamId]; - - require(IERC20(stream.tokenAddress).transfer(stream.recipient, amount), "token transfer failure"); - emit WithdrawFromStream(streamId, stream.recipient, amount); - } - - struct WithdrawFromCompoundingStreamInternalLocalVars { - MathError mathErr; - uint256 amountWithoutSenderInterest; - uint256 netWithdrawalAmount; - } - - /** - * @notice Withdraws to the recipient's account and pays the accrued interest to all parties. - * @dev If the stream balance has been depleted to 0, the stream object to save gas and optimise - * contract storage. - * @param streamId The id of the stream to withdraw from. - * @param amount Withdraw tokens amount. - * Throws if there is a math error. - * Throws if there is a token transfer failure. - */ - function withdrawFromCompoundingStreamInternal(uint256 streamId, uint256 amount) internal { - Types.Stream memory stream = streams[streamId]; - WithdrawFromCompoundingStreamInternalLocalVars memory vars; - - /* Calculate the interest earned by each party for keeping `stream.balance` in the smart contract. */ - (uint256 senderInterest, uint256 recipientInterest, uint256 sablierInterest) = interestOf(streamId, amount); - - /* - * Calculate the net withdrawal amount by subtracting `senderInterest` and `sablierInterest`. - * Because the decimal points are lost when we truncate Exponentials, the recipient will implicitly earn - * `recipientInterest` plus a tiny-weeny amount of interest, max 2e-8 in cToken denomination. - */ - (vars.mathErr, vars.amountWithoutSenderInterest) = subUInt(amount, senderInterest); - require(vars.mathErr == MathError.NO_ERROR, "amount without sender interest calculation error"); - (vars.mathErr, vars.netWithdrawalAmount) = subUInt(vars.amountWithoutSenderInterest, sablierInterest); - require(vars.mathErr == MathError.NO_ERROR, "net withdrawal amount calculation error"); - - /* Subtract `amount` from the remaining balance of the stream. */ - (vars.mathErr, streams[streamId].remainingBalance) = subUInt(stream.remainingBalance, amount); - require(vars.mathErr == MathError.NO_ERROR, "balance subtraction calculation error"); - - /* Delete the objects from storage if the remaining balance has been depleted to 0. */ - if (streams[streamId].remainingBalance == 0) { - delete streams[streamId]; - delete compoundingStreamsVars[streamId]; - } - - /* Add the sablier interest to the earnings for this cToken. */ - (vars.mathErr, earnings[stream.tokenAddress]) = addUInt(earnings[stream.tokenAddress], sablierInterest); - require(vars.mathErr == MathError.NO_ERROR, "earnings addition calculation error"); - - /* Transfer the tokens to the sender and the recipient. */ - ICERC20 cToken = ICERC20(stream.tokenAddress); - if (senderInterest > 0) - require(cToken.transfer(stream.sender, senderInterest), "sender token transfer failure"); - require(cToken.transfer(stream.recipient, vars.netWithdrawalAmount), "recipient token transfer failure"); - - emit WithdrawFromStream(streamId, stream.recipient, vars.netWithdrawalAmount); - emit PayInterest(streamId, senderInterest, recipientInterest, sablierInterest); - } - - /** - * @notice Cancels the stream and transfers the tokens back on a pro rata basis. - * @dev The stream and compounding stream vars objects get deleted to save gas - * and optimise contract storage. - * Throws if there is a token transfer failure. - * @param streamId The id of the stream to cancel. - */ - function cancelStreamInternal(uint256 streamId) internal { - Types.Stream memory stream = streams[streamId]; - uint256 senderBalance = balanceOf(streamId, stream.sender); - uint256 recipientBalance = balanceOf(streamId, stream.recipient); - - delete streams[streamId]; - - IERC20 token = IERC20(stream.tokenAddress); - if (recipientBalance > 0) - require(token.transfer(stream.recipient, recipientBalance), "recipient token transfer failure"); - if (senderBalance > 0) require(token.transfer(stream.sender, senderBalance), "sender token transfer failure"); - - emit CancelStream(streamId, stream.sender, stream.recipient, senderBalance, recipientBalance); - } - - struct CancelCompoundingStreamInternal { - MathError mathErr; - uint256 netSenderBalance; - uint256 recipientBalanceWithoutSenderInterest; - uint256 netRecipientBalance; - } - - /** - * @notice Cancels the stream, transfers the tokens back on a pro rata basis and pays the accrued - * interest to all parties. - * @dev Importantly, the money that has not been streamed yet is not considered chargeable. - * All the interest generated by that underlying will be returned to the sender. - * Throws if there is a math error. - * Throws if there is a token transfer failure. - * @param streamId The id of the stream to cancel. - */ - function cancelCompoundingStreamInternal(uint256 streamId) internal { - Types.Stream memory stream = streams[streamId]; - CancelCompoundingStreamInternal memory vars; - - /* - * The sender gets back all the money that has not been streamed so far. By that, we mean both - * the underlying amount and the interest generated by it. - */ - uint256 senderBalance = balanceOf(streamId, stream.sender); - uint256 recipientBalance = balanceOf(streamId, stream.recipient); - - /* Calculate the interest earned by each party for keeping `recipientBalance` in the smart contract. */ - (uint256 senderInterest, uint256 recipientInterest, uint256 sablierInterest) = interestOf( - streamId, - recipientBalance - ); - - /* - * We add `senderInterest` to `senderBalance` to calculate the net balance for the sender. - * After this, the rest of the function is similar to `withdrawFromCompoundingStreamInternal`, except - * we add the sender's share of the interest generated by `recipientBalance` to `senderBalance`. - */ - (vars.mathErr, vars.netSenderBalance) = addUInt(senderBalance, senderInterest); - require(vars.mathErr == MathError.NO_ERROR, "net sender balance calculation error"); - - /* - * Calculate the net withdrawal amount by subtracting `senderInterest` and `sablierInterest`. - * Because the decimal points are lost when we truncate Exponentials, the recipient will implicitly earn - * `recipientInterest` plus a tiny-weeny amount of interest, max 2e-8 in cToken denomination. - */ - (vars.mathErr, vars.recipientBalanceWithoutSenderInterest) = subUInt(recipientBalance, senderInterest); - require(vars.mathErr == MathError.NO_ERROR, "recipient balance without sender interest calculation error"); - (vars.mathErr, vars.netRecipientBalance) = subUInt(vars.recipientBalanceWithoutSenderInterest, sablierInterest); - require(vars.mathErr == MathError.NO_ERROR, "net recipient balance calculation error"); - - /* Add the sablier interest to the earnings attributed to this cToken. */ - (vars.mathErr, earnings[stream.tokenAddress]) = addUInt(earnings[stream.tokenAddress], sablierInterest); - require(vars.mathErr == MathError.NO_ERROR, "earnings addition calculation error"); - - /* Delete the objects from storage. */ - delete streams[streamId]; - delete compoundingStreamsVars[streamId]; - - /* Transfer the tokens to the sender and the recipient. */ - IERC20 token = IERC20(stream.tokenAddress); - if (vars.netSenderBalance > 0) - require(token.transfer(stream.sender, vars.netSenderBalance), "sender token transfer failure"); - if (vars.netRecipientBalance > 0) - require(token.transfer(stream.recipient, vars.netRecipientBalance), "recipient token transfer failure"); - - emit CancelStream(streamId, stream.sender, stream.recipient, vars.netSenderBalance, vars.netRecipientBalance); - emit PayInterest(streamId, senderInterest, recipientInterest, sablierInterest); - } - - - - /*** UTILS ***/ - - /** - * @notice Get token decimals given a stream id. - * @dev This is an utility function for DApp layer when converting to float numbers. - * @param streamId The id of the stream. - */ - function getTokenDecimalsFromStream(uint256 streamId) - external - streamExists(streamId) - returns (uint8) - { - Types.Stream memory stream = streams[streamId]; - return IERC20View(stream.tokenAddress).decimals(); - } - - /** - * @notice Get token decimals given token address. - * @dev This is an utility function for DApp layer when converting to float numbers. - * @param tokenAddress The token address. - */ - function getTokenDecimals(address tokenAddress) - external - returns (uint8) - { - return IERC20View(tokenAddress).decimals(); - } -} diff --git a/contracts/sablier/protocol/Types.sol b/contracts/sablier/protocol/Types.sol deleted file mode 100644 index af0d6a9d..00000000 --- a/contracts/sablier/protocol/Types.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity >=0.6.0; - -import "../shared-contracts/compound/Exponential.sol"; - -/** - * @title Sablier Types - * @author Sablier - */ -library Types { - struct Stream { - uint256 deposit; - uint256 ratePerSecond; - uint256 remainingBalance; - uint256 startTime; - uint256 stopTime; - address recipient; - address sender; - address tokenAddress; - bool isEntity; - } - - struct CompoundingStreamVars { - Exponential.Exp exchangeRateInitial; - Exponential.Exp senderShare; - Exponential.Exp recipientShare; - bool isEntity; - } -} diff --git a/contracts/sablier/protocol/interfaces/ICTokenManager.sol b/contracts/sablier/protocol/interfaces/ICTokenManager.sol deleted file mode 100644 index 685d0758..00000000 --- a/contracts/sablier/protocol/interfaces/ICTokenManager.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity >=0.6.0; - -/** - * @title CTokenManager Interface - * @author Sablier - */ -interface ICTokenManager { - /** - * @notice Emits when the owner discards a cToken. - */ - event DiscardCToken(address indexed tokenAddress); - - /** - * @notice Emits when the owner whitelists a cToken. - */ - event WhitelistCToken(address indexed tokenAddress); - - function whitelistCToken(address tokenAddress) external; - - function discardCToken(address tokenAddress) external; - - function isCToken(address tokenAddress) external view returns (bool); -} diff --git a/contracts/sablier/protocol/interfaces/IERC1620.sol b/contracts/sablier/protocol/interfaces/IERC1620.sol deleted file mode 100644 index 61e7a8d8..00000000 --- a/contracts/sablier/protocol/interfaces/IERC1620.sol +++ /dev/null @@ -1,61 +0,0 @@ -pragma solidity >=0.6.0; - -/** - * @title ERC-1620 Money Streaming Standard - * @author Sablier - * @dev See https://eips.ethereum.org/EIPS/eip-1620 - */ -interface IERC1620 { - /** - * @notice Emits when a stream is successfully created. - */ - event CreateStream( - uint256 indexed streamId, - address indexed sender, - address indexed recipient, - uint256 deposit, - address tokenAddress, - uint256 startTime, - uint256 stopTime - ); - - /** - * @notice Emits when the recipient of a stream withdraws a portion or all their pro rata share of the stream. - */ - event WithdrawFromStream(uint256 indexed streamId, address indexed recipient, uint256 amount); - - /** - * @notice Emits when a stream is successfully cancelled and tokens are transferred back on a pro rata basis. - */ - event CancelStream( - uint256 indexed streamId, - address indexed sender, - address indexed recipient, - uint256 senderBalance, - uint256 recipientBalance - ); - - function balanceOf(uint256 streamId, address who) external view returns (uint256 balance); - - function getStream(uint256 streamId) - external - view - returns ( - address sender, - address recipient, - uint256 deposit, - address token, - uint256 startTime, - uint256 stopTime, - uint256 remainingBalance, - uint256 ratePerSecond - ); - - function createStream(address recipient, uint256 deposit, address tokenAddress, uint256 startTime, uint256 stopTime) - external - returns (uint256 streamId); - - function withdrawFromStream(uint256 streamId, uint256 funds) external returns (bool); - - function cancelStream(uint256 streamId) external returns (bool); -} diff --git a/contracts/sablier/shared-contracts/ERC20Base.sol b/contracts/sablier/shared-contracts/ERC20Base.sol deleted file mode 100644 index 03de3b00..00000000 --- a/contracts/sablier/shared-contracts/ERC20Base.sol +++ /dev/null @@ -1,193 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/GSN/Context.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; - -/** - * @title Standard ERC20 token - * - * @dev Implementation of the basic standard token. - * https://eips.ethereum.org/EIPS/eip-20 - * Originally based on code by FirstBlood: - * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol - * - * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for - * all accounts just by listening to said events. Note that this isn't required by the specification, and other - * compliant implementations may not do it. - */ -contract ERC20Base is Context, IERC20 { - using SafeMath for uint256; - - mapping (address => uint256) private _balances; - - mapping (address => mapping (address => uint256)) private _allowances; - - uint256 private _totalSupply; - - /** - * @dev Total number of tokens in existence - */ - function totalSupply() public view override returns (uint256) { - return _totalSupply; - } - - /** - * @dev Gets the balance of the specified address. - * @param owner The address to query the balance of. - * @return A uint256 representing the amount owned by the passed address. - */ - function balanceOf(address owner) public view override returns (uint256) { - return _balances[owner]; - } - - /** - * @dev Function to check the amount of tokens that an owner allowed to a spender. - * @param owner address The address which owns the funds. - * @param spender address The address which will spend the funds. - * @return A uint256 specifying the amount of tokens still available for the spender. - */ - function allowance(address owner, address spender) public view override returns (uint256) { - return _allowances[owner][spender]; - } - - /** - * @dev Transfer token to a specified address - * @param to The address to transfer to. - * @param value The amount to be transferred. - */ - function transfer(address to, uint256 value) public override returns (bool) { - _transfer(_msgSender(), to, value); - return true; - } - - /** - * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. - * Beware that changing an allowance with this method brings the risk that someone may use both the old - * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this - * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: - * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - * @param spender The address which will spend the funds. - * @param value The amount of tokens to be spent. - */ - function approve(address spender, uint256 value) public override returns (bool) { - _approve(_msgSender(), spender, value); - return true; - } - - /** - * @dev Transfer tokens from one address to another. - * Note that while this function emits an Approval event, this is not required as per the specification, - * and other compliant implementations may not emit the event. - * @param from address The address which you want to send tokens from - * @param to address The address which you want to transfer to - * @param value uint256 the amount of tokens to be transferred - */ - function transferFrom(address from, address to, uint256 value) public override returns (bool) { - _transfer(from, to, value); - _approve(from, _msgSender(), _allowances[from][_msgSender()].sub(value)); - return true; - } - - /** - * @dev Increase the amount of tokens that an owner allowed to a spender. - * approve should be called when _allowances[msg.sender][spender] == 0. To increment - * allowed value is better to use this function to avoid 2 calls (and wait until - * the first transaction is mined) - * From MonolithDAO Token.sol - * Emits an Approval event. - * @param spender The address which will spend the funds. - * @param addedValue The amount of tokens to increase the allowance by. - */ - function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { - _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); - return true; - } - - /** - * @dev Decrease the amount of tokens that an owner allowed to a spender. - * approve should be called when _allowances[msg.sender][spender] == 0. To decrement - * allowed value is better to use this function to avoid 2 calls (and wait until - * the first transaction is mined) - * From MonolithDAO Token.sol - * Emits an Approval event. - * @param spender The address which will spend the funds. - * @param subtractedValue The amount of tokens to decrease the allowance by. - */ - function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { - _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue)); - return true; - } - - /** - * @dev Transfer token for a specified addresses - * @param from The address to transfer from. - * @param to The address to transfer to. - * @param value The amount to be transferred. - */ - function _transfer(address from, address to, uint256 value) internal { - require(to != address(0)); - - _balances[from] = _balances[from].sub(value); - _balances[to] = _balances[to].add(value); - emit Transfer(from, to, value); - } - - /** - * @dev Internal function that mints an amount of the token and assigns it to - * an account. This encapsulates the modification of balances such that the - * proper events are emitted. - * @param account The account that will receive the created tokens. - * @param value The amount that will be created. - */ - function _mint(address account, uint256 value) internal { - require(account != address(0)); - - _totalSupply = _totalSupply.add(value); - _balances[account] = _balances[account].add(value); - emit Transfer(address(0), account, value); - } - - /** - * @dev Internal function that burns an amount of the token of a given - * account. - * @param account The account whose tokens will be burnt. - * @param value The amount that will be burnt. - */ - function _burn(address account, uint256 value) internal { - require(account != address(0)); - - _totalSupply = _totalSupply.sub(value); - _balances[account] = _balances[account].sub(value); - emit Transfer(account, address(0), value); - } - - /** - * @dev Approve an address to spend another addresses' tokens. - * @param owner The address that owns the tokens. - * @param spender The address that will spend the tokens. - * @param value The number of tokens that can be spent. - */ - function _approve(address owner, address spender, uint256 value) internal { - require(spender != address(0)); - require(owner != address(0)); - - _allowances[owner][spender] = value; - emit Approval(owner, spender, value); - } - - /** - * @dev Internal function that burns an amount of the token of a given - * account, deducting from the sender's allowance for said account. Uses the - * internal burn function. - * Emits an Approval event (reflecting the reduced allowance). - * @param account The account whose tokens will be burnt. - * @param amount The amount that will be burnt. - */ - function _burnFrom(address account, uint256 amount) internal { - _burn(account, amount); - _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount)); - } - - uint256[50] private ______gap; -} diff --git a/contracts/sablier/shared-contracts/compound/CarefulMath.sol b/contracts/sablier/shared-contracts/compound/CarefulMath.sol deleted file mode 100644 index 1d22b1a3..00000000 --- a/contracts/sablier/shared-contracts/compound/CarefulMath.sol +++ /dev/null @@ -1,85 +0,0 @@ -pragma solidity >=0.6.0; - -/** - * @title Careful Math - * @author Compound - * @notice Derived from OpenZeppelin's SafeMath library - * https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol - */ -contract CarefulMath { - - /** - * @dev Possible error codes that we can return - */ - enum MathError { - NO_ERROR, - DIVISION_BY_ZERO, - INTEGER_OVERFLOW, - INTEGER_UNDERFLOW - } - - /** - * @dev Multiplies two numbers, returns an error on overflow. - */ - function mulUInt(uint a, uint b) internal pure returns (MathError, uint) { - if (a == 0) { - return (MathError.NO_ERROR, 0); - } - - uint c = a * b; - - if (c / a != b) { - return (MathError.INTEGER_OVERFLOW, 0); - } else { - return (MathError.NO_ERROR, c); - } - } - - /** - * @dev Integer division of two numbers, truncating the quotient. - */ - function divUInt(uint a, uint b) internal pure returns (MathError, uint) { - if (b == 0) { - return (MathError.DIVISION_BY_ZERO, 0); - } - - return (MathError.NO_ERROR, a / b); - } - - /** - * @dev Subtracts two numbers, returns an error on overflow (i.e. if subtrahend is greater than minuend). - */ - function subUInt(uint a, uint b) internal pure returns (MathError, uint) { - if (b <= a) { - return (MathError.NO_ERROR, a - b); - } else { - return (MathError.INTEGER_UNDERFLOW, 0); - } - } - - /** - * @dev Adds two numbers, returns an error on overflow. - */ - function addUInt(uint a, uint b) internal pure returns (MathError, uint) { - uint c = a + b; - - if (c >= a) { - return (MathError.NO_ERROR, c); - } else { - return (MathError.INTEGER_OVERFLOW, 0); - } - } - - /** - * @dev add a and b and then subtract c - */ - function addThenSubUInt(uint a, uint b, uint c) internal pure returns (MathError, uint) { - (MathError err0, uint sum) = addUInt(a, b); - - if (err0 != MathError.NO_ERROR) { - return (err0, 0); - } - - return subUInt(sum, c); - } -} diff --git a/contracts/sablier/shared-contracts/compound/EIP20Interface.sol b/contracts/sablier/shared-contracts/compound/EIP20Interface.sol deleted file mode 100644 index 460705c4..00000000 --- a/contracts/sablier/shared-contracts/compound/EIP20Interface.sol +++ /dev/null @@ -1,59 +0,0 @@ -pragma solidity >=0.6.0; - -/** - * @title ERC 20 Token Standard Interface - * https://eips.ethereum.org/EIPS/eip-20 - */ -interface EIP20Interface { - - /** - * @notice Get the total number of tokens in circulation - * @return The supply of tokens - */ - function totalSupply() external view returns (uint256); - - /** - * @notice Gets the balance of the specified address - * @param owner The address from which the balance will be retrieved - * @return balance The balance - */ - function balanceOf(address owner) external view returns (uint256 balance); - - /** - * @notice Transfer `amount` tokens from `msg.sender` to `dst` - * @param dst The address of the destination account - * @param amount The number of tokens to transfer - * @return success Whether or not the transfer succeeded - */ - function transfer(address dst, uint256 amount) external returns (bool success); - - /** - * @notice Transfer `amount` tokens from `src` to `dst` - * @param src The address of the source account - * @param dst The address of the destination account - * @param amount The number of tokens to transfer - * @return success Whether or not the transfer succeeded - */ - function transferFrom(address src, address dst, uint256 amount) external returns (bool success); - - /** - * @notice Approve `spender` to transfer up to `amount` from `src` - * @dev This will overwrite the approval amount for `spender` - * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) - * @param spender The address of the account which may transfer tokens - * @param amount The number of tokens that are approved (-1 means infinite) - * @return success Whether or not the approval succeeded - */ - function approve(address spender, uint256 amount) external returns (bool success); - - /** - * @notice Get the current allowance from `owner` for `spender` - * @param owner The address of the account which owns the tokens to be spent - * @param spender The address of the account which may transfer tokens - * @return remaining The number of tokens allowed to be spent (-1 means infinite) - */ - function allowance(address owner, address spender) external view returns (uint256 remaining); - - event Transfer(address indexed from, address indexed to, uint256 amount); - event Approval(address indexed owner, address indexed spender, uint256 amount); -} diff --git a/contracts/sablier/shared-contracts/compound/Exponential.sol b/contracts/sablier/shared-contracts/compound/Exponential.sol deleted file mode 100644 index a190f196..00000000 --- a/contracts/sablier/shared-contracts/compound/Exponential.sol +++ /dev/null @@ -1,226 +0,0 @@ -pragma solidity >=0.6.0; - -import "./CarefulMath.sol"; - -/** - * @title Exponential module for storing fixed-decision decimals - * @author Compound - * @notice Exp is a struct which stores decimals with a fixed precision of 18 decimal places. - * Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is: - * `Exp({mantissa: 5100000000000000000})`. - */ -contract Exponential is CarefulMath { - uint constant expScale = 1e18; - uint constant halfExpScale = expScale/2; - uint constant mantissaOne = expScale; - - struct Exp { - uint mantissa; - } - - /** - * @dev Creates an exponential from numerator and denominator values. - * Note: Returns an error if (`num` * 10e18) > MAX_INT, - * or if `denom` is zero. - */ - function getExp(uint num, uint denom) pure internal returns (MathError, Exp memory) { - (MathError err0, uint scaledNumerator) = mulUInt(num, expScale); - if (err0 != MathError.NO_ERROR) { - return (err0, Exp({mantissa: 0})); - } - - (MathError err1, uint rational) = divUInt(scaledNumerator, denom); - if (err1 != MathError.NO_ERROR) { - return (err1, Exp({mantissa: 0})); - } - - return (MathError.NO_ERROR, Exp({mantissa: rational})); - } - - /** - * @dev Adds two exponentials, returning a new exponential. - */ - function addExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) { - (MathError error, uint result) = addUInt(a.mantissa, b.mantissa); - - return (error, Exp({mantissa: result})); - } - - /** - * @dev Subtracts two exponentials, returning a new exponential. - */ - function subExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) { - (MathError error, uint result) = subUInt(a.mantissa, b.mantissa); - - return (error, Exp({mantissa: result})); - } - - /** - * @dev Multiply an Exp by a scalar, returning a new Exp. - */ - function mulScalar(Exp memory a, uint scalar) pure internal returns (MathError, Exp memory) { - (MathError err0, uint scaledMantissa) = mulUInt(a.mantissa, scalar); - if (err0 != MathError.NO_ERROR) { - return (err0, Exp({mantissa: 0})); - } - - return (MathError.NO_ERROR, Exp({mantissa: scaledMantissa})); - } - - /** - * @dev Multiply an Exp by a scalar, then truncate to return an unsigned integer. - */ - function mulScalarTruncate(Exp memory a, uint scalar) pure internal returns (MathError, uint) { - (MathError err, Exp memory product) = mulScalar(a, scalar); - if (err != MathError.NO_ERROR) { - return (err, 0); - } - - return (MathError.NO_ERROR, truncate(product)); - } - - /** - * @dev Multiply an Exp by a scalar, truncate, then add an to an unsigned integer, returning an unsigned integer. - */ - function mulScalarTruncateAddUInt(Exp memory a, uint scalar, uint addend) pure internal returns (MathError, uint) { - (MathError err, Exp memory product) = mulScalar(a, scalar); - if (err != MathError.NO_ERROR) { - return (err, 0); - } - - return addUInt(truncate(product), addend); - } - - /** - * @dev Divide an Exp by a scalar, returning a new Exp. - */ - function divScalar(Exp memory a, uint scalar) pure internal returns (MathError, Exp memory) { - (MathError err0, uint descaledMantissa) = divUInt(a.mantissa, scalar); - if (err0 != MathError.NO_ERROR) { - return (err0, Exp({mantissa: 0})); - } - - return (MathError.NO_ERROR, Exp({mantissa: descaledMantissa})); - } - - /** - * @dev Divide a scalar by an Exp, returning a new Exp. - */ - function divScalarByExp(uint scalar, Exp memory divisor) pure internal returns (MathError, Exp memory) { - /* - We are doing this as: - getExp(mulUInt(expScale, scalar), divisor.mantissa) - - How it works: - Exp = a / b; - Scalar = s; - `s / (a / b)` = `b * s / a` and since for an Exp `a = mantissa, b = expScale` - */ - (MathError err0, uint numerator) = mulUInt(expScale, scalar); - if (err0 != MathError.NO_ERROR) { - return (err0, Exp({mantissa: 0})); - } - return getExp(numerator, divisor.mantissa); - } - - /** - * @dev Divide a scalar by an Exp, then truncate to return an unsigned integer. - */ - function divScalarByExpTruncate(uint scalar, Exp memory divisor) pure internal returns (MathError, uint) { - (MathError err, Exp memory fraction) = divScalarByExp(scalar, divisor); - if (err != MathError.NO_ERROR) { - return (err, 0); - } - - return (MathError.NO_ERROR, truncate(fraction)); - } - - /** - * @dev Multiplies two exponentials, returning a new exponential. - */ - function mulExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) { - - (MathError err0, uint doubleScaledProduct) = mulUInt(a.mantissa, b.mantissa); - if (err0 != MathError.NO_ERROR) { - return (err0, Exp({mantissa: 0})); - } - - // We add half the scale before dividing so that we get rounding instead of truncation. - // See "Listing 6" and text above it at https://accu.org/index.php/journals/1717 - // Without this change, a result like 6.6...e-19 will be truncated to 0 instead of being rounded to 1e-18. - (MathError err1, uint doubleScaledProductWithHalfScale) = addUInt(halfExpScale, doubleScaledProduct); - if (err1 != MathError.NO_ERROR) { - return (err1, Exp({mantissa: 0})); - } - - (MathError err2, uint product) = divUInt(doubleScaledProductWithHalfScale, expScale); - // The only error `div` can return is MathError.DIVISION_BY_ZERO but we control `expScale` and it is not zero. - assert(err2 == MathError.NO_ERROR); - - return (MathError.NO_ERROR, Exp({mantissa: product})); - } - - /** - * @dev Multiplies two exponentials given their mantissas, returning a new exponential. - */ - function mulExp(uint a, uint b) pure internal returns (MathError, Exp memory) { - return mulExp(Exp({mantissa: a}), Exp({mantissa: b})); - } - - /** - * @dev Multiplies three exponentials, returning a new exponential. - */ - function mulExp3(Exp memory a, Exp memory b, Exp memory c) pure internal returns (MathError, Exp memory) { - (MathError err, Exp memory ab) = mulExp(a, b); - if (err != MathError.NO_ERROR) { - return (err, ab); - } - return mulExp(ab, c); - } - - /** - * @dev Divides two exponentials, returning a new exponential. - * (a/scale) / (b/scale) = (a/scale) * (scale/b) = a/b, - * which we can scale as an Exp by calling getExp(a.mantissa, b.mantissa) - */ - function divExp(Exp memory a, Exp memory b) pure internal returns (MathError, Exp memory) { - return getExp(a.mantissa, b.mantissa); - } - - /** - * @dev Truncates the given exp to a whole number value. - * For example, truncate(Exp{mantissa: 15 * expScale}) = 15 - */ - function truncate(Exp memory exp) pure internal returns (uint) { - // Note: We are not using careful math here as we're performing a division that cannot fail - return exp.mantissa / expScale; - } - - /** - * @dev Checks if first Exp is less than second Exp. - */ - function lessThanExp(Exp memory left, Exp memory right) pure internal returns (bool) { - return left.mantissa < right.mantissa; //TODO: Add some simple tests and this in another PR yo. - } - - /** - * @dev Checks if left Exp <= right Exp. - */ - function lessThanOrEqualExp(Exp memory left, Exp memory right) pure internal returns (bool) { - return left.mantissa <= right.mantissa; - } - - /** - * @dev Checks if left Exp > right Exp. - */ - function greaterThanExp(Exp memory left, Exp memory right) pure internal returns (bool) { - return left.mantissa > right.mantissa; - } - - /** - * @dev returns true if Exp is exactly zero - */ - function isZeroExp(Exp memory value) pure internal returns (bool) { - return value.mantissa == 0; - } -} diff --git a/contracts/sablier/shared-contracts/interfaces/ICERC20.sol b/contracts/sablier/shared-contracts/interfaces/ICERC20.sol deleted file mode 100644 index eb7d1aca..00000000 --- a/contracts/sablier/shared-contracts/interfaces/ICERC20.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity >=0.6.0; - -/** - * @title CERC20 interface - * @author Sablier - * @dev See https://compound.finance/developers - */ -interface ICERC20 { - function balanceOf(address who) external view returns (uint256); - - function isCToken() external view returns (bool); - - function approve(address spender, uint256 value) external returns (bool); - - function balanceOfUnderlying(address account) external returns (uint256); - - function exchangeRateCurrent() external returns (uint256); - - function mint(uint256 mintAmount) external returns (uint256); - - function redeem(uint256 redeemTokens) external returns (uint256); - - function redeemUnderlying(uint256 redeemAmount) external returns (uint256); - - function transfer(address recipient, uint256 amount) external returns (bool); - - function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); -} diff --git a/contracts/sablier/shared-contracts/lifecycle/OwnableWithoutRenounce.sol b/contracts/sablier/shared-contracts/lifecycle/OwnableWithoutRenounce.sol deleted file mode 100644 index bd293560..00000000 --- a/contracts/sablier/shared-contracts/lifecycle/OwnableWithoutRenounce.sol +++ /dev/null @@ -1,71 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/GSN/Context.sol"; -import "@openzeppelin/contracts/proxy/Initializable.sol"; - -/** - * @title OwnableWithoutRenounce - * @author Sablier - * @dev Fork of OpenZeppelin's Ownable contract, which provides basic authorization control, but with - * the `renounceOwnership` function removed to avoid fat-finger errors. - * We inherit from `Context` to keep this contract compatible with the Gas Station Network. - * See https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package/blob/master/contracts/ownership/Ownable.sol - * See https://forum.openzeppelin.com/t/contract-request-ownable-without-renounceownership/1400 - * See https://docs.openzeppelin.com/contracts/2.x/gsn#_msg_sender_and_msg_data - */ -contract OwnableWithoutRenounce is Initializable, Context { - address private _owner; - - event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); - - /** - * @dev The Ownable constructor sets the original `owner` of the contract to the sender - * account. - */ - function initialize(address sender) public initializer { - _owner = sender; - emit OwnershipTransferred(address(0), _owner); - } - - /** - * @return the address of the owner. - */ - function owner() public view returns (address) { - return _owner; - } - - /** - * @dev Throws if called by any account other than the owner. - */ - modifier onlyOwner() { - require(isOwner()); - _; - } - - /** - * @return true if `msg.sender` is the owner of the contract. - */ - function isOwner() public view returns (bool) { - return _msgSender() == _owner; - } - - /** - * @dev Allows the current owner to transfer control of the contract to a newOwner. - * @param newOwner The address to transfer ownership to. - */ - function transferOwnership(address newOwner) public onlyOwner { - _transferOwnership(newOwner); - } - - /** - * @dev Transfers control of the contract to a newOwner. - * @param newOwner The address to transfer ownership to. - */ - function _transferOwnership(address newOwner) internal { - require(newOwner != address(0)); - emit OwnershipTransferred(_owner, newOwner); - _owner = newOwner; - } - - uint256[50] private ______gap; -} diff --git a/contracts/sablier/shared-contracts/mocks/CERC20Mock.sol b/contracts/sablier/shared-contracts/mocks/CERC20Mock.sol deleted file mode 100644 index 4e2dce7a..00000000 --- a/contracts/sablier/shared-contracts/mocks/CERC20Mock.sol +++ /dev/null @@ -1,116 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "../ERC20Base.sol"; -import "../compound/EIP20Interface.sol"; - -/** - * @title CERC20 Mock - * @author Sablier - * @dev See https://compound.finance/developers - * based on Sablier's CERC20 Mock - */ -contract CERC20Mock is ERC20Base { - using SafeMath for uint256; - - /** - * @notice Indicator that this is a CToken contract (for inspection) - */ - bool public constant isCToken = true; - - /** - * @notice Block number that interest started to increase from - */ - uint256 public initialBlockNumber; - - /** - * @notice Initial exchange rate used when minting the first CTokens (used when totalSupply = 0) - */ - uint256 public initialExchangeRate; - - /** - * @notice Underlying asset for this CToken - */ - address public underlying; - - /** - * @notice EIP-20 token decimals for this token - */ - uint256 public decimals; - - /** - * @notice Construct a new money market - * @param underlying_ The address of the underlying asset - * @param initialExchangeRate_ The initial exchange rate, scaled by 1e18 - * @param decimals_ ERC-20 decimal precision of this token - */ - constructor(address underlying_, uint256 initialExchangeRate_, uint256 decimals_) public { - initialBlockNumber = block.number; - underlying = underlying_; - initialExchangeRate = initialExchangeRate_; - decimals = decimals_; - EIP20Interface(underlying).totalSupply(); // Sanity check the underlying - } - - /*** User Interface ***/ - - /** - * @notice Get the underlying balance of the `owner` - * @dev This also accrues interest in a transaction - * @param owner The address of the account to query - * @return The amount of underlying owned by `owner` - */ - function balanceOfUnderlying(address owner) public view returns (uint256) { - uint256 underlyingBalance = EIP20Interface(underlying).balanceOf(address(this)); - if (balanceOf(owner) == 0) return 0; - return (totalSupply().mul(1e18).div(balanceOf(owner))).mul(underlyingBalance).div(1e18); - } - - /** - * @notice Accrue interest then return the up-to-date exchange rate - * @return Calculated exchange rate scaled by 1e18 - */ - function exchangeRateCurrent() public view returns (uint256) { - uint256 totalUnderlying = EIP20Interface(underlying).balanceOf(address(this)); - uint256 tokenValueExp = initialExchangeRate; - if (totalSupply() > 0 && totalUnderlying > 0) { - totalUnderlying = totalUnderlying.mul(1e18); - tokenValueExp = totalUnderlying.div(totalSupply()); - } - return tokenValueExp; - } - - /** - * @notice Sender supplies assets into the market and receives cTokens in exchange - * @dev Accrues interest whether or not the operation succeeds, unless reverted - * @param mintAmount The amount of the underlying asset to supply - * @return true=success, otherwise a failure - */ - function mint(uint256 mintAmount) external returns (bool) { - uint256 mintedTokens = (mintAmount.mul(1e18)).div(exchangeRateCurrent()); - _mint(msg.sender, mintedTokens); - return EIP20Interface(underlying).transferFrom(msg.sender, address(this), mintAmount); - } - - /** - * @notice Sender supplies underlying to the money market - * @dev This is just a mock - * @param supplyAmount The amount of underlying to supply - * @return true=success, otherwise a failure - */ - function supplyUnderlying(uint256 supplyAmount) external returns (bool) { - return EIP20Interface(underlying).transferFrom(msg.sender, address(this), supplyAmount); - } - - /** - * @notice Sender redeems cTokens in exchange for a specified amount of underlying asset - * @dev This is just a mock - * @param redeemAmount The amount of underlying to redeem - * @return true=success, otherwise a failure - */ - function redeemUnderlying(uint256 redeemAmount) external returns (bool) { - uint256 redeemTokens = redeemAmount.mul(1e18).div(exchangeRateCurrent()); - _burn(msg.sender, redeemTokens); - return EIP20Interface(underlying).transfer(msg.sender, redeemAmount); - } -} diff --git a/contracts/sablier/shared-contracts/test/EvilERC20.sol b/contracts/sablier/shared-contracts/test/EvilERC20.sol deleted file mode 100644 index e33b8db7..00000000 --- a/contracts/sablier/shared-contracts/test/EvilERC20.sol +++ /dev/null @@ -1,58 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - -/// @dev Mock class using ERC20 -/// @author Sablier - -contract EvilERC20 is ERC20 { - bool shouldDisableTransfer; - bool shouldDisableTransferFrom; - - constructor() public ERC20("EvilERC20", "evilerc20") { - shouldDisableTransfer = false; - shouldDisableTransferFrom = false; - } - - function setShouldDisableTransfer(bool value) external { - shouldDisableTransfer = value; - } - - function setShouldDisableTransferFrom(bool value) external { - shouldDisableTransferFrom = value; - } - - /** - * @dev Transfers token to a specified address, unless `shouldDisableTransfer` is `true`. - * @param to The address to transfer to. - * @param value The amount to be transferred. - */ - function transfer(address to, uint256 value) public override returns (bool) { - if (shouldDisableTransfer) { - return false; - } - return super.transfer(to, value); - } - - /** - * @dev Transfer tokens from one address to another unless `shouldDisableTransferFrom` is `true`. - * @param from address The address which you want to send tokens from - * @param to address The address which you want to transfer to - * @param value uint256 the amount of tokens to be transferred - */ - function transferFrom(address from, address to, uint256 value) public override returns (bool) { - if (shouldDisableTransferFrom) { - return false; - } - return super.transferFrom(from, to, value); - } - - /** - * @dev Allows anyone to mint tokens to any address - * @param to The address that will receive the minted tokens. - * @param amount The amount of tokens to mint. - */ - function mint(address to, uint256 amount) public { - _mint(to, amount); - } -} diff --git a/contracts/sablier/shared-contracts/test/NonStandardERC20.sol b/contracts/sablier/shared-contracts/test/NonStandardERC20.sol deleted file mode 100644 index c8641538..00000000 --- a/contracts/sablier/shared-contracts/test/NonStandardERC20.sol +++ /dev/null @@ -1,102 +0,0 @@ -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/math/SafeMath.sol"; - -/** - * @title Non Standard ERC20 - * @dev Forked from OpenZeppelin's ERC20 - * @author Sablier - */ - -contract NonStandardERC20 { - using SafeMath for uint256; - - mapping(address => uint256) private _balances; - - mapping(address => mapping(address => uint256)) private _allowances; - - uint256 private _totalSupply; - - event NonStandardTransfer(address indexed from, address indexed to, uint256 value); - - event NonStandardApproval(address indexed owner, address indexed spender, uint256 value); - - function nonStandardTotalSupply() public view returns (uint256) { - return _totalSupply; - } - - function nonStandardBalanceOf(address account) public view returns (uint256) { - return _balances[account]; - } - - function nonStandardTransfer(address recipient, uint256 amount) public returns (bool) { - _transfer(msg.sender, recipient, amount); - return true; - } - - function nonStandardAllowance(address owner, address spender) public view returns (uint256) { - return _allowances[owner][spender]; - } - function nonStandardApprove(address spender, uint256 value) public returns (bool) { - _approve(msg.sender, spender, value); - return true; - } - - function nonStandardTransferFrom(address sender, address recipient, uint256 amount) public returns (bool) { - _transfer(sender, recipient, amount); - _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount)); - return true; - } - - function nonStandardIncreaseAllowance(address spender, uint256 addedValue) public returns (bool) { - _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); - return true; - } - - function nonStandardDecreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { - _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue)); - return true; - } - - function nonStandardMint(address account, uint256 amount) public { - _mint(account, amount); - } - - function _transfer(address sender, address recipient, uint256 amount) internal { - require(sender != address(0), "ERC20: nonStandardTransfer from the zero address"); - require(recipient != address(0), "ERC20: nonStandardTransfer to the zero address"); - - _balances[sender] = _balances[sender].sub(amount); - _balances[recipient] = _balances[recipient].add(amount); - emit NonStandardTransfer(sender, recipient, amount); - } - - function _mint(address account, uint256 amount) internal { - require(account != address(0), "ERC20: mint to the zero address"); - - _totalSupply = _totalSupply.add(amount); - _balances[account] = _balances[account].add(amount); - emit NonStandardTransfer(address(0), account, amount); - } - - function _burn(address account, uint256 value) internal { - require(account != address(0), "ERC20: burn from the zero address"); - - _totalSupply = _totalSupply.sub(value); - _balances[account] = _balances[account].sub(value); - emit NonStandardTransfer(account, address(0), value); - } - - function _approve(address owner, address spender, uint256 value) internal { - require(owner != address(0), "ERC20: nonStandardApprove from the zero address"); - require(spender != address(0), "ERC20: nonStandardApprove to the zero address"); - - _allowances[owner][spender] = value; - emit NonStandardApproval(owner, spender, value); - } - - function _burnFrom(address account, uint256 amount) internal { - _burn(account, amount); - _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount)); - } -} diff --git a/contracts/ERC1155Ownable.sol b/contracts/token/ERC1155/extensions/ERC1155Ownable.sol similarity index 80% rename from contracts/ERC1155Ownable.sol rename to contracts/token/ERC1155/extensions/ERC1155Ownable.sol index 242cca34..35393302 100644 --- a/contracts/ERC1155Ownable.sol +++ b/contracts/token/ERC1155/extensions/ERC1155Ownable.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; -import "./utils/Ownable.sol"; +import "../../../access/Ownable.sol"; contract ERC1155Ownable is ERC1155, Ownable { - constructor (string memory uri) public ERC1155(uri) { } + constructor (string memory uri) public ERC1155(uri) Ownable() { } function setURI(string memory uri) public onlyOwner { _setURI(uri); diff --git a/contracts/IERC20View.sol b/contracts/token/ERC20/IERC20View.sol similarity index 97% rename from contracts/IERC20View.sol rename to contracts/token/ERC20/IERC20View.sol index c4e97cde..1678e99b 100644 --- a/contracts/IERC20View.sol +++ b/contracts/token/ERC20/IERC20View.sol @@ -1,6 +1,6 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP diff --git a/contracts/token/ERC20/extensions/ERC20CappedToken.sol b/contracts/token/ERC20/extensions/ERC20CappedToken.sol new file mode 100644 index 00000000..d09b9857 --- /dev/null +++ b/contracts/token/ERC20/extensions/ERC20CappedToken.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity >=0.8.0; +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +contract ERC20CappedToken is ERC20, Ownable { + + address public distributionContract; + uint256 public supplyCap; + + constructor( + string memory _name, + string memory _symbol, + uint256 _supplyCap, + address _distributionContract + ) public ERC20(_name, _symbol) Ownable(_msgSender()) { + supplyCap = _supplyCap; + _mint(_distributionContract, _supplyCap); + } + + function mint(address receiver, uint256 amount) public onlyOwner { + require(totalSupply() + amount <= supplyCap, "ERC20CappedToken: supply overflow"); + _mint(receiver, amount); + } +} diff --git a/contracts/ERC20Distribution.sol b/contracts/token/ERC20/extensions/ERC20Distribution.sol similarity index 86% rename from contracts/ERC20Distribution.sol rename to contracts/token/ERC20/extensions/ERC20Distribution.sol index 9a64bef6..d602d6c2 100644 --- a/contracts/ERC20Distribution.sol +++ b/contracts/token/ERC20/extensions/ERC20Distribution.sol @@ -1,12 +1,13 @@ -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/Pausable.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "./utils/Ownable.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + contract ERC20Distribution is Pausable, Ownable { - using SafeMath for uint256; + using Math for uint256; uint256 constant public decimals = 1 ether; address[] public tokenOwners ; /* Tracks distributions mapping (iterable) */ @@ -26,7 +27,7 @@ contract ERC20Distribution is Pausable, Ownable { uint256 amountSent; } - constructor() public{} + constructor() Ownable(_msgSender()) {} function setTokenAddress(IERC20 _tokenAddress) external onlyOwner whenNotPaused { erc20 = _tokenAddress; @@ -50,7 +51,7 @@ contract ERC20Distribution is Pausable, Ownable { /* TGE has not started */ require(block.timestamp > TGEDate, "TGE still hasn't started"); /* Test that the call be only done once per day */ - require(block.timestamp.sub(lastDateDistribution) > 1 days, "Can only be called once a day"); + require(block.timestamp - lastDateDistribution > 1 days, "Can only be called once a day"); lastDateDistribution = block.timestamp; /* Go thru all tokenOwners */ for(uint i = 0; i < tokenOwners.length; i++) { @@ -58,13 +59,13 @@ contract ERC20Distribution is Pausable, Ownable { DistributionStep[] memory d = distributions[tokenOwners[i]]; /* Go thru all distributions array */ for(uint j = 0; j < d.length; j++){ - if( (block.timestamp.sub(TGEDate) > d[j].unlockDay) /* Verify if unlockDay has passed */ + if( (block.timestamp + TGEDate > d[j].unlockDay) /* Verify if unlockDay has passed */ && (d[j].currentAllocated > 0) /* Verify if currentAllocated > 0, so that address has tokens to be sent still */ ){ uint256 sendingAmount; sendingAmount = d[j].currentAllocated; - distributions[tokenOwners[i]][j].currentAllocated = distributions[tokenOwners[i]][j].currentAllocated.sub(sendingAmount); - distributions[tokenOwners[i]][j].amountSent = distributions[tokenOwners[i]][j].amountSent.add(sendingAmount); + distributions[tokenOwners[i]][j].currentAllocated = distributions[tokenOwners[i]][j].currentAllocated - sendingAmount; + distributions[tokenOwners[i]][j].amountSent = distributions[tokenOwners[i]][j].amountSent + sendingAmount; require(erc20.transfer(tokenOwners[i], sendingAmount)); } } diff --git a/contracts/token/ERC20/extensions/ERC20Ownable.sol b/contracts/token/ERC20/extensions/ERC20Ownable.sol new file mode 100644 index 00000000..a295a5b1 --- /dev/null +++ b/contracts/token/ERC20/extensions/ERC20Ownable.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity >=0.8.0; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +contract ERC20Ownable is ERC20, Ownable { + uint8 private _decimals; + + constructor(string memory _name, string memory _symbol, uint8 decimals_, uint256 initialSupply) public Ownable(_msgSender()) ERC20(_name, _symbol) { + if (initialSupply > 0) { + _mint(_msgSender(), initialSupply); + } + + _decimals = decimals_; + } + + function mint(address receiver, uint256 amount) public onlyOwner { + _mint(receiver, amount); + } +} \ No newline at end of file diff --git a/contracts/ERC20TokenLock.sol b/contracts/token/ERC20/extensions/ERC20TokenLock.sol similarity index 93% rename from contracts/ERC20TokenLock.sol rename to contracts/token/ERC20/extensions/ERC20TokenLock.sol index 94e43fa5..e259a8bf 100644 --- a/contracts/ERC20TokenLock.sol +++ b/contracts/token/ERC20/extensions/ERC20TokenLock.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/Pausable.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "./utils/Ownable.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; contract ERC20TokenLock is Pausable, Ownable { - using SafeMath for uint256; + using Math for uint256; IERC20 public erc20; //address of ERC20 token being held/locked by this contract @@ -43,7 +43,7 @@ contract ERC20TokenLock is Pausable, Ownable { /** * @dev Constructor */ - constructor(address _erc20TokenAddress) public { + constructor(address _erc20TokenAddress) public Ownable(msg.sender) Pausable() { erc20 = IERC20(_erc20TokenAddress); } @@ -52,7 +52,7 @@ contract ERC20TokenLock is Pausable, Ownable { * @return address */ function admin() public view returns (address) { - return owner; + return owner(); } /** @@ -104,7 +104,7 @@ contract ERC20TokenLock is Pausable, Ownable { lockedTokensMap[msg.sender].endDate = endDate; lockedTokensMap[msg.sender].amount = amount; - totalAmountStaked = totalAmountStaked.add(amount); + totalAmountStaked = totalAmountStaked + amount; emit TokensLocked(msg.sender, amount, block.timestamp, endDate); return true; } @@ -120,7 +120,7 @@ contract ERC20TokenLock is Pausable, Ownable { uint amount = lockedTokensMap[msg.sender].amount; lockedTokensMap[msg.sender].amount = 0; - totalAmountStaked = totalAmountStaked.sub(amount); + totalAmountStaked = totalAmountStaked - amount; require(erc20.transfer(msg.sender, amount), "transfer failed"); emit TokensReleased(msg.sender, amount, block.timestamp); diff --git a/contracts/ERC/4626/ERC4626.sol b/contracts/token/ERC4626/ERC4626.sol similarity index 82% rename from contracts/ERC/4626/ERC4626.sol rename to contracts/token/ERC4626/ERC4626.sol index c84ef35a..e9c773bf 100644 --- a/contracts/ERC/4626/ERC4626.sol +++ b/contracts/token/ERC4626/ERC4626.sol @@ -1,20 +1,19 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/extensions/ERC4626.sol) -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; -import "@openzeppelin/contracts/math/Math.sol"; -import "./IERC4626.sol"; -import "../../math/SaferMath.sol"; -import "../../ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "../../IERC20View.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; +import "./IERC4626.sol"; +import "../ERC20/IERC20View.sol"; contract ERC4626 is ERC20 { - using SaferMath for uint256; + using Math for uint256; - Token private immutable _asset; + IERC20 private immutable _asset; uint8 private immutable _decimals; event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); @@ -30,8 +29,8 @@ contract ERC4626 is ERC20 { /** * @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC20 or ERC777). */ - constructor(Token asset_, string memory name_, string memory symbol_) public ERC20(name_, symbol_) { - (bool success, uint8 assetDecimals) = _tryGetAssetDecimals(asset_); + constructor(IERC20 asset_, string memory name_, string memory symbol_) public ERC20(name_, symbol_) { + (, uint8 assetDecimals) = _tryGetAssetDecimals(asset_); _decimals = super.decimals(); _asset = asset_; } @@ -39,7 +38,7 @@ contract ERC4626 is ERC20 { /** * @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way. */ - function _tryGetAssetDecimals(Token asset_) private view returns (bool, uint8) { + function _tryGetAssetDecimals(IERC20 asset_) private view returns (bool, uint8) { (bool success, bytes memory encodedDecimals) = address(asset_).staticcall( abi.encodeWithSelector(IERC20View.decimals.selector) ); @@ -74,12 +73,12 @@ contract ERC4626 is ERC20 { /** @dev See {IERC4626-convertToShares}. */ function convertToShares(uint256 assets) public view virtual returns (uint256 shares) { - return _convertToShares(assets, SaferMath.Rounding.Down); + return _convertToShares(assets, Math.Rounding.Floor); } /** @dev See {IERC4626-convertToAssets}. */ function convertToAssets(uint256 shares) public view virtual returns (uint256 assets) { - return _convertToAssets(shares, SaferMath.Rounding.Down); + return _convertToAssets(shares, Math.Rounding.Floor); } /** @dev See {IERC4626-maxDeposit}. */ @@ -94,7 +93,7 @@ contract ERC4626 is ERC20 { /** @dev See {IERC4626-maxWithdraw}. */ function maxWithdraw(address owner) public view virtual returns (uint256) { - return _convertToAssets(balanceOf(owner), SaferMath.Rounding.Down); + return _convertToAssets(balanceOf(owner), Math.Rounding.Floor); } /** @dev See {IERC4626-maxRedeem}. */ @@ -104,22 +103,22 @@ contract ERC4626 is ERC20 { /** @dev See {IERC4626-previewDeposit}. */ function previewDeposit(uint256 assets) public view virtual returns (uint256) { - return _convertToShares(assets, SaferMath.Rounding.Down); + return _convertToShares(assets, Math.Rounding.Floor); } /** @dev See {IERC4626-previewMint}. */ function previewMint(uint256 shares) public view virtual returns (uint256) { - return _convertToAssets(shares, SaferMath.Rounding.Up); + return _convertToAssets(shares, Math.Rounding.Ceil); } /** @dev See {IERC4626-previewRedeem}. */ function previewRedeem(uint256 shares) public view virtual returns (uint256) { - return _convertToAssets(shares, SaferMath.Rounding.Down); + return _convertToAssets(shares, Math.Rounding.Floor); } /** @dev See {IERC4626-previewWithdraw}. */ function previewWithdraw(uint256 assets) public view virtual returns (uint256) { - return _convertToShares(assets, SaferMath.Rounding.Up); + return _convertToShares(assets, Math.Rounding.Ceil); } /** @dev See {IERC4626-deposit}. */ @@ -187,7 +186,7 @@ contract ERC4626 is ERC20 { // Conclusion: we need to do the transfer before we mint so that any reentrancy would happen before the // assets are transferred and before the shares are minted, which is a valid state. // slither-disable-next-line reentrancy-no-eth - Token(_asset).transferFrom(caller, address(this), assets); + IERC20(_asset).transferFrom(caller, address(this), assets); _mint(receiver, shares); emit Deposit(caller, receiver, assets, shares); @@ -201,7 +200,7 @@ contract ERC4626 is ERC20 { * Will revert if assets > 0, totalSupply > 0 and totalAssets = 0. That corresponds to a case where any asset * would represent an infinite amount of shares. */ - function _convertToShares(uint256 assets, SaferMath.Rounding rounding) internal view virtual returns (uint256 shares) { + function _convertToShares(uint256 assets, Math.Rounding rounding) internal view virtual returns (uint256 shares) { uint256 supply = totalSupply(); return (assets == 0 || supply == 0) ? _initialConvertToShares(assets, rounding) @@ -215,7 +214,7 @@ contract ERC4626 is ERC20 { */ function _initialConvertToShares( uint256 assets, - SaferMath.Rounding /*rounding*/ + Math.Rounding /*rounding*/ ) internal view virtual returns (uint256 shares) { return assets; } @@ -223,7 +222,7 @@ contract ERC4626 is ERC20 { /** * @dev Internal conversion function (from shares to assets) with support for rounding direction. */ - function _convertToAssets(uint256 shares, SaferMath.Rounding rounding) internal view virtual returns (uint256 assets) { + function _convertToAssets(uint256 shares, Math.Rounding rounding) internal view virtual returns (uint256 assets) { uint256 supply = totalSupply(); return (supply == 0) ? _initialConvertToAssets(shares, rounding) : shares.mulDiv(totalAssets(), supply, rounding); @@ -236,7 +235,7 @@ contract ERC4626 is ERC20 { */ function _initialConvertToAssets( uint256 shares, - SaferMath.Rounding /*rounding*/ + Math.Rounding /*rounding*/ ) internal view virtual returns (uint256 assets) { return shares; } @@ -262,23 +261,11 @@ contract ERC4626 is ERC20 { // Conclusion: we need to do the transfer after the burn so that any reentrancy would happen after the // shares are burned and after the assets are transferred, which is a valid state. _burn(owner, shares); - Token(_asset).transfer(receiver, assets); + IERC20(_asset).transfer(receiver, assets); emit Withdraw(caller, receiver, owner, assets, shares); } - function _spendAllowance( - address owner, - address spender, - uint256 amount - ) internal virtual { - uint256 currentAllowance = allowance(owner, spender); - if (currentAllowance != type(uint256).max) { - require(currentAllowance >= amount, "ERC20: insufficient allowance"); - _approve(owner, spender, currentAllowance - amount); - } - } - function _isVaultCollateralized() private view returns (bool) { return totalAssets() > 0 || totalSupply() == 0; } diff --git a/contracts/ERC/4626/IERC4626.sol b/contracts/token/ERC4626/IERC4626.sol similarity index 99% rename from contracts/ERC/4626/IERC4626.sol rename to contracts/token/ERC4626/IERC4626.sol index 6bb11c8e..25e73368 100644 --- a/contracts/ERC/4626/IERC4626.sol +++ b/contracts/token/ERC4626/IERC4626.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (interfaces/IERC4626.sol) -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; diff --git a/contracts/token/ERC721/extensions/ERC721Colletibles.sol b/contracts/token/ERC721/extensions/ERC721Colletibles.sol new file mode 100644 index 00000000..b71e4bf9 --- /dev/null +++ b/contracts/token/ERC721/extensions/ERC721Colletibles.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >=0.8.0; + +import "../utils/Opener.sol"; +import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; + +contract ERC721Collectibles is Opener, ERC721URIStorage { + + constructor ( + string memory name, string memory symbol, + uint256 limitedAmount, + ERC20 _purchaseToken, + address baseFeeAddress, + address feeAddress, + address otherAddress) public ERC721(name, symbol) Opener(_purchaseToken, baseFeeAddress, feeAddress, otherAddress, limitedAmount) {} + + string __baseURI = ""; + + function _baseURI() internal view override returns (string memory) { + return __baseURI; + } + + function baseURI() public view returns (string memory) { + return _baseURI(); + } + + function setTokenURI(uint256 tokenId, string memory uri) public onlyOwner { + _setTokenURI(tokenId, uri); + } + + function setBaseURI(string memory baseURI_) public onlyOwner { + __baseURI = baseURI_; + } + + function mint(uint256 tokenIdToMint) public { + require( + tokenIdToMint <= _currentTokenId, + "Token Id not registered" + ); + + require(registeredIDs[msg.sender][tokenIdToMint], "Token was not registered or not the rightful owner"); + require(!alreadyMinted[tokenIdToMint], "Already minted"); + + alreadyMinted[tokenIdToMint] = true; + _safeMint(msg.sender, tokenIdToMint); + } + + function openPack(uint256 amount) public { + _openPack(amount); + } + + function getRegisteredIDs(address _address) public view returns(uint256[] memory) { + return registeredIDsArray[_address]; + } +} \ No newline at end of file diff --git a/contracts/ERC721Marketplace.sol b/contracts/token/ERC721/extensions/ERC721Marketplace.sol similarity index 93% rename from contracts/ERC721Marketplace.sol rename to contracts/token/ERC721/extensions/ERC721Marketplace.sol index 1a0841dc..7bb57e6d 100644 --- a/contracts/ERC721Marketplace.sol +++ b/contracts/token/ERC721/extensions/ERC721Marketplace.sol @@ -1,13 +1,14 @@ -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "./utils/Ownable.sol"; -import "./utils/ReentrancyGuardOptimized.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; +import "../../../access/Ownable.sol"; +import "../../../access/ReentrancyGuardOptimized.sol"; contract ERC721Marketplace is Ownable, ReentrancyGuardOptimized { - using SafeMath for uint256; + using Math for uint256; ERC20 public erc20Address; IERC721 private erc721Address; @@ -30,7 +31,7 @@ contract ERC721Marketplace is Ownable, ReentrancyGuardOptimized { bool sold; } - constructor(ERC20 _erc20Address, IERC721 _erc721Address) ReentrancyGuardOptimized() public { + constructor(ERC20 _erc20Address, IERC721 _erc721Address) public ReentrancyGuardOptimized() { erc20Address = _erc20Address; erc721Address = _erc721Address; } @@ -52,7 +53,7 @@ contract ERC721Marketplace is Ownable, ReentrancyGuardOptimized { sale.saleId = saleIncrementId; sale.tokenId = _tokenId; sale.price = _price; - sale.seller = msg.sender; + sale.seller = payable(msg.sender); sale.date = block.timestamp; sales[_tokenId] = sale; salesById[saleIncrementId] = _tokenId; diff --git a/contracts/token/ERC721/extensions/ERC721Standard.sol b/contracts/token/ERC721/extensions/ERC721Standard.sol new file mode 100644 index 00000000..38e637cf --- /dev/null +++ b/contracts/token/ERC721/extensions/ERC721Standard.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >=0.8.0; +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import "../../../access/Ownable.sol"; + +contract ERC721Standard is ERC721, Ownable { + + constructor (string memory name, string memory symbol) public ERC721(name, symbol) { } + + function mint(address to, uint256 tokenId) public onlyOwner { + _safeMint(to, tokenId); + } + + function mint(address to, uint256 tokenId, bytes memory _data) public onlyOwner { + _safeMint(to, tokenId, _data); + } +} \ No newline at end of file diff --git a/contracts/ERC721Factory.sol b/contracts/token/ERC721/utils/Opener.sol similarity index 56% rename from contracts/ERC721Factory.sol rename to contracts/token/ERC721/utils/Opener.sol index 37f59f5e..a054031a 100644 --- a/contracts/ERC721Factory.sol +++ b/contracts/token/ERC721/utils/Opener.sol @@ -1,13 +1,12 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: UNLICENSED +pragma solidity >=0.8.0; -pragma solidity >=0.6.0; - -import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "./utils/Ownable.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; +import "../../../access/Ownable.sol"; contract Opener is Ownable { - using SafeMath for uint256; + using Math for uint256; ERC20 public _purchaseToken; address public _baseFeeAddress; @@ -53,7 +52,7 @@ contract Opener is Ownable { function _openPack(uint256 amount) internal { require(!_closed, "Opener is locked"); - uint256 totalPrice = _pricePerPack.mul(amount); + (, uint256 totalPrice) = _pricePerPack.tryMul(amount); require(_purchaseToken.allowance(msg.sender, address(this)) >= totalPrice, "Not enough money per pack"); @@ -62,7 +61,7 @@ contract Opener is Ownable { require(amount <= MAX_PURCHASE, "Max purchase per tx reached"); if(_isLimited){ - require(_limitedAmount >= _openedPacks.add(amount), "Amount of packs not available"); + require(_limitedAmount >= _openedPacks + amount, "Amount of packs not available"); } _distributePackShares(from, totalPrice); @@ -70,7 +69,7 @@ contract Opener is Ownable { emit Opening(from, amount, _openedPacks); _openedPacks += amount; - for(uint i = _currentTokenId; i < _currentTokenId.add(amount); i++){ + for(uint i = _currentTokenId; i < _currentTokenId + amount; i++){ registeredIDs[msg.sender][i] = true; registeredIDsArray[msg.sender].push(i); } @@ -82,7 +81,7 @@ contract Opener is Ownable { //transfer of fee share _purchaseToken.transferFrom(from, _baseFeeAddress, (amount * _baseFeeShare) / 100); - if(address(_feeShare) != address(0)){ + if(_feeShare != 0){ //transfer of stake share _purchaseToken.transferFrom( from, @@ -138,79 +137,4 @@ contract Opener is Ownable { function unlock() public onlyOwner { _closed = false; } -} - -// ERC721Standard made for a simple structure, owner generates himself the NFT he wants (direct minting) -contract ERC721Standard is ERC721, Ownable { - - constructor (string memory name, string memory symbol) public ERC721(name, symbol) { } - - function exists(uint256 tokenId) public view returns (bool) { - return _exists(tokenId); - } - - function setTokenURI(uint256 tokenId, string memory uri) public onlyOwner { - _setTokenURI(tokenId, uri); - } - - function setBaseURI(string memory baseURI) public onlyOwner { - _setBaseURI(baseURI); - } - - function mint(address to, uint256 tokenId) public onlyOwner { - _safeMint(to, tokenId); - } - - function mint(address to, uint256 tokenId, bytes memory _data) public onlyOwner { - _safeMint(to, tokenId, _data); - } -} - -// ERC721Collectibles made for a Cryptokitties/Polkamon like structure, where an hash is given by the owner based on a purchase of a package -// Can be limited or unlimited -contract ERC721Collectibles is Opener, ERC721 { - - constructor ( - string memory name, string memory symbol, - uint256 limitedAmount, - ERC20 _purchaseToken, - address baseFeeAddress, - address feeAddress, - address otherAddress) public ERC721(name, symbol) - Opener(_purchaseToken, baseFeeAddress, feeAddress, otherAddress, limitedAmount) - { - } - - function exists(uint256 tokenId) public view returns (bool) { - return _exists(tokenId); - } - - function setTokenURI(uint256 tokenId, string memory uri) public onlyOwner { - _setTokenURI(tokenId, uri); - } - - function setBaseURI(string memory baseURI) public onlyOwner { - _setBaseURI(baseURI); - } - - function mint(uint256 tokenIdToMint) public { - require( - tokenIdToMint <= _currentTokenId, - "Token Id not registered" - ); - - require(registeredIDs[msg.sender][tokenIdToMint], "Token was not registered or not the rightful owner"); - require(!alreadyMinted[tokenIdToMint], "Already minted"); - - alreadyMinted[tokenIdToMint] = true; - _safeMint(msg.sender, tokenIdToMint); - } - - function openPack(uint256 amount) public { - _openPack(amount); - } - - function getRegisteredIDs(address _address) public view returns(uint256[] memory) { - return registeredIDsArray[_address]; - } -} +} \ No newline at end of file diff --git a/contracts/uniswap/TestLiquidityProvider.sol b/contracts/uniswap/TestLiquidityProvider.sol deleted file mode 100644 index c8746b01..00000000 --- a/contracts/uniswap/TestLiquidityProvider.sol +++ /dev/null @@ -1,246 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity =0.7.6; -pragma abicoder v2; - -import '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol'; -import "@openzeppelin/contracts/utils/Context.sol"; -//import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol'; -import '@uniswap/v3-core/contracts/libraries/TickMath.sol'; -import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol'; -import '@uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol'; -import '@uniswap/v3-periphery/contracts/base/LiquidityManagement.sol'; - -contract TestLiquidityProvider is Context, IERC721Receiver { - - INonfungiblePositionManager public immutable nonfungiblePositionManager; - - /// @notice Represents the deposit of an NFT - struct Deposit { - address owner; - uint128 liquidity; - address token0; - address token1; - } - - /// @dev deposits[tokenId] => Deposit - mapping(uint256 => Deposit) public deposits; - - constructor( - INonfungiblePositionManager _nonfungiblePositionManager - ) { - nonfungiblePositionManager = _nonfungiblePositionManager; - } - - // Implementing `onERC721Received` so this contract can receive custody of erc721 tokens - function onERC721Received( - address operator, - address, //from - uint256 tokenId, - bytes calldata - ) external override returns (bytes4) { - // get position information - - _createDeposit(operator, tokenId); - - return this.onERC721Received.selector; - } - - function _createDeposit(address owner, uint256 tokenId) internal { - (, , address token0, address token1, , , , uint128 liquidity, , , , ) = - nonfungiblePositionManager.positions(tokenId); - - // set the owner and data for position - // operator is msg.sender - deposits[tokenId] = Deposit({owner: owner, liquidity: liquidity, token0: token0, token1: token1}); - } - - /// @notice Calls the mint function defined in perphery, mints given amounts of each token. - /// Providing liquidity in both assets means liquidity will be earning fees and is considered in-range. - /// @param token0 The token0 address to mint - /// @param token1 The token1 address to mint - /// @param poolFee The pool fee - /// @param amount0ToMint The amount of token0 to mint - /// @param amount1ToMint The amount of token1 to mint - /// @param useTickLowerAndUpper If true we use provided tickLower and tickUpper otherwise min and max ticks - /// @param tickLower Tick lower for the position if enabled - /// @param tickUpper Tick upper for the position if enabled - /// @return tokenId The id of the newly minted ERC721 - /// @return liquidity The amount of liquidity for the position - /// @return amount0 The amount of token0 - /// @return amount1 The amount of token1 - function mintNewPosition( - address token0, address token1, uint24 poolFee, - uint256 amount0ToMint, uint256 amount1ToMint, - bool useTickLowerAndUpper, int24 tickLower, int24 tickUpper - ) - external - returns ( - uint256 tokenId, - uint128 liquidity, - uint256 amount0, - uint256 amount1 - ) - { - // transfer tokens to contract - TransferHelper.safeTransferFrom(token0, _msgSender(), address(this), amount0ToMint); - TransferHelper.safeTransferFrom(token1, _msgSender(), address(this), amount1ToMint); - - // Approve the position manager - TransferHelper.safeApprove(token0, address(nonfungiblePositionManager), amount0ToMint); - TransferHelper.safeApprove(token1, address(nonfungiblePositionManager), amount1ToMint); - - INonfungiblePositionManager.MintParams memory params = - INonfungiblePositionManager.MintParams({ - token0: token0, - token1: token1, - fee: poolFee, - tickLower: (useTickLowerAndUpper ? tickLower : TickMath.MIN_TICK), - tickUpper: (useTickLowerAndUpper ? tickUpper : TickMath.MAX_TICK), - amount0Desired: amount0ToMint, - amount1Desired: amount1ToMint, - amount0Min: 0, - amount1Min: 0, - recipient: address(this), - deadline: block.timestamp - }); - - // Note that the pool defined by token0/token1 and fee tier must already be created and initialized in order to mint - (tokenId, liquidity, amount0, amount1) = nonfungiblePositionManager.mint(params); - - // Create a deposit - _createDeposit(msg.sender, tokenId); - - // Remove allowance and refund in both assets. - if (amount0 < amount0ToMint) { - TransferHelper.safeApprove(token0, address(nonfungiblePositionManager), 0); - uint256 refund0 = amount0ToMint - amount0; - TransferHelper.safeTransfer(token0, _msgSender(), refund0); - } - - if (amount1 < amount1ToMint) { - TransferHelper.safeApprove(token1, address(nonfungiblePositionManager), 0); - uint256 refund1 = amount1ToMint - amount1; - TransferHelper.safeTransfer(token1, _msgSender(), refund1); - } - } - - /// @notice Collects the fees associated with provided liquidity - /// @dev The contract must hold the erc721 token before it can collect fees - /// @param tokenId The id of the erc721 token - /// @return amount0 The amount of fees collected in token0 - /// @return amount1 The amount of fees collected in token1 - function collectAllFees(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) { - // Caller must own the ERC721 position, meaning it must be a deposit - - // set amount0Max and amount1Max to uint256.max to collect all fees - // alternatively can set recipient to msg.sender and avoid another transaction in `sendToOwner` - INonfungiblePositionManager.CollectParams memory params = - INonfungiblePositionManager.CollectParams({ - tokenId: tokenId, - recipient: address(this), - amount0Max: type(uint128).max, - amount1Max: type(uint128).max - }); - - (amount0, amount1) = nonfungiblePositionManager.collect(params); - - // send collected feed back to owner - _sendToOwner(tokenId, amount0, amount1); - } - - /// @notice A function that decreases the current liquidity by half. An example to show how to call the `decreaseLiquidity` function defined in periphery. - /// @param tokenId The id of the erc721 token - /// @return amount0 The amount received back in token0 - /// @return amount1 The amount returned back in token1 - function decreaseLiquidityInHalf(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) { - // caller must be the owner of the NFT - require(_msgSender() == deposits[tokenId].owner, 'Not the owner'); - // get liquidity data for tokenId - uint128 liquidity = deposits[tokenId].liquidity; - uint128 halfLiquidity = liquidity / 2; - - // amount0Min and amount1Min are price slippage checks - // if the amount received after burning is not greater than these minimums, transaction will fail - INonfungiblePositionManager.DecreaseLiquidityParams memory params = - INonfungiblePositionManager.DecreaseLiquidityParams({ - tokenId: tokenId, - liquidity: halfLiquidity, - amount0Min: 0, - amount1Min: 0, - deadline: block.timestamp - }); - - (amount0, amount1) = nonfungiblePositionManager.decreaseLiquidity(params); - - //send liquidity back to owner - _sendToOwner(tokenId, amount0, amount1); - } - - /// @notice Increases liquidity in the current range - /// @dev Pool must be initialized already to add liquidity - /// @param tokenId The id of the erc721 token - /// @param amount0 The amount to add of token0 - /// @param amount1 The amount to add of token1 - /// @return liquidity The amount of liquidity for the position - /// @return amount0 The amount of token0 - /// @return amount1 The amount of token1 - function increaseLiquidityCurrentRange( - uint256 tokenId, - uint256 amountAdd0, - uint256 amountAdd1 - ) - external - returns ( - uint128 liquidity, - uint256 amount0, - uint256 amount1 - ) { - - TransferHelper.safeTransferFrom(deposits[tokenId].token0, _msgSender(), address(this), amountAdd0); - TransferHelper.safeTransferFrom(deposits[tokenId].token1, _msgSender(), address(this), amountAdd1); - - TransferHelper.safeApprove(deposits[tokenId].token0, address(nonfungiblePositionManager), amountAdd0); - TransferHelper.safeApprove(deposits[tokenId].token1, address(nonfungiblePositionManager), amountAdd1); - - INonfungiblePositionManager.IncreaseLiquidityParams memory params = INonfungiblePositionManager.IncreaseLiquidityParams({ - tokenId: tokenId, - amount0Desired: amountAdd0, - amount1Desired: amountAdd1, - amount0Min: 0, - amount1Min: 0, - deadline: block.timestamp - }); - - (liquidity, amount0, amount1) = nonfungiblePositionManager.increaseLiquidity(params); - } - - /// @notice Transfers funds to owner of NFT - /// @param tokenId The id of the erc721 - /// @param amount0 The amount of token0 - /// @param amount1 The amount of token1 - function _sendToOwner( - uint256 tokenId, - uint256 amount0, - uint256 amount1 - ) internal { - // get owner of contract - address owner = deposits[tokenId].owner; - - address token0 = deposits[tokenId].token0; - address token1 = deposits[tokenId].token1; - // send collected fees to owner - TransferHelper.safeTransfer(token0, owner, amount0); - TransferHelper.safeTransfer(token1, owner, amount1); - } - - /// @notice Transfers the NFT to the owner - /// @param tokenId The id of the erc721 - function retrieveNFT(uint256 tokenId) external { - // must be the owner of the NFT - require(_msgSender() == deposits[tokenId].owner, 'Not the owner'); - // transfer ownership to original owner - nonfungiblePositionManager.safeTransferFrom(address(this), _msgSender(), tokenId); - //remove information related to tokenId - delete deposits[tokenId]; - } -} \ No newline at end of file diff --git a/contracts/uniswap/TestUniswapV3RouterBridge.sol b/contracts/uniswap/TestUniswapV3RouterBridge.sol deleted file mode 100644 index 6a119bc2..00000000 --- a/contracts/uniswap/TestUniswapV3RouterBridge.sol +++ /dev/null @@ -1,64 +0,0 @@ -//pragma solidity >=0.6.0 <0.8.0; -pragma solidity =0.7.6; -pragma abicoder v2; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/utils/Context.sol"; - -import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; -import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol'; -import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol'; - -import "../utils/ReentrancyGuardOptimized.sol"; -import "./UniswapV3RouterBridge.sol"; -//import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -//import "@openzeppelin/contracts/utils/EnumerableSet.sol"; -//import "../utils/Ownable.sol"; -//import "../../math/SafePercentMath.sol"; - -/// @title UniswapV3 Router Bridge smart contract for external calls -contract TestUniswapV3RouterBridge is UniswapV3RouterBridge, ReentrancyGuardOptimized { - constructor( - ISwapRouter _swapRouter - ) UniswapV3RouterBridge(_swapRouter) { - } - - /// @notice swapExactInputSingle swaps a fixed amount of tokenIn for a maximum possible amount of tokenOut - /// using the tokenIn/tokenOut 0.3% pool by calling `exactInputSingle` in the swap router. - /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed. - /// @param tokenIn TokenIn address sender wants to exchange. - /// @param tokenOut TokenOut address sender wants to get in exchange. - /// @param poolFee Pool fee. - /// @param amountIn The exact amount of 'tokenIn' that will be swapped for 'tokenOut'. - /// @param amountOutMinimum The minimum amount of 'amountOut' tokens that will be returned from the swap, this is used to prevent front running attacks, - /// proviging a pre calculated expected minimum amount. - /// @return amountOut The amount of 'tokenOut' received. - function swapExactInputSingleEx( - address tokenIn, address tokenOut, uint24 poolFee, - uint256 amountIn, uint256 amountOutMinimum) - external - nonReentrant - returns (uint256 amountOut) { - // msg.sender must approve this contract - return swapExactInputSingle(tokenIn, tokenOut, poolFee, _msgSender(), amountIn, amountOutMinimum); - } - - /// @notice swapExactOutputSingle swaps a minimum possible amount of 'tokenIn' for a fixed amount of 'tokenOut'. - /// @dev The calling address must approve this contract to spend its 'tokenIn' for this function to succeed. As the amount of input 'tokenIn' is variable, - /// the calling address will need to approve for a slightly higher amount, anticipating some variance. - /// @param tokenIn TokenIn address sender wants to exchange. - /// @param tokenOut TokenOut address sender wants to get in exchange. - /// @param poolFee Pool fee. - /// @param amountOut The exact amount of 'tokenOut' to receive from the swap. - /// @param amountInMaximum The amount of 'tokenIn' we are willing to spend to receive the specified amount of 'tokenOut'. - /// @return amountIn The amount of 'tokenIn' actually spent in the swap. - function swapExactOutputSingleEx( - address tokenIn, address tokenOut, uint24 poolFee, - uint256 amountOut, uint256 amountInMaximum) - external - nonReentrant - returns (uint256 amountIn) { - return swapExactOutputSingle(tokenIn, tokenOut, poolFee, _msgSender(), amountOut, amountInMaximum); - } -} diff --git a/contracts/uniswap/UniswapV3RouterBridge.sol b/contracts/uniswap/UniswapV3RouterBridge.sol deleted file mode 100644 index 181dd875..00000000 --- a/contracts/uniswap/UniswapV3RouterBridge.sol +++ /dev/null @@ -1,135 +0,0 @@ -//pragma solidity >=0.6.0 <0.8.0; -pragma solidity =0.7.6; -pragma abicoder v2; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/utils/Context.sol"; - -import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; -import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol'; -import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol'; - -//import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -//import "@openzeppelin/contracts/utils/EnumerableSet.sol"; -//import "../../utils/Ownable.sol"; -//import "../../utils/ReentrancyGuardOptimized.sol"; -//import "../../math/SafePercentMath.sol"; - -/// @title UniswapV3 Router Bridge smart contract -abstract contract UniswapV3RouterBridge is Context { - //, ReentrancyGuardOptimized { - using SafeMath for uint256; - //using SafePercentMath for uint256; - - //IUniswapV3Pool public immutable uniswapV3; //immutable - ISwapRouter public immutable swapRouter; - - // we will set the pool fee to 0.3%. - //uint24 public constant poolFee = 3000; - - //mapping(address => PoolInfo) pools; // pool exists toggles. - //// Add the library methods - //using EnumerableSet for EnumerableSet.AddressSet; - //EnumerableSet.AddressSet private poolTokensList; - - constructor( - //IUniswapV3Pool _uniswapV3 - ISwapRouter _swapRouter - ) { - - //uniswapV3 = _uniswapV3; - swapRouter = _swapRouter; - } - - /// @notice swapExactInputSingle swaps a fixed amount of tokenIn for a maximum possible amount of tokenOut - /// using the tokenIn/tokenOut 0.3% pool by calling `exactInputSingle` in the swap router. - /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed. - /// @param tokenIn TokenIn address sender wants to exchange. - /// @param tokenOut TokenOut address sender wants to get in exchange. - /// @param poolFee Pool fee. - /// @param from Tokens owner address we transfer tokens from to be exchanged. - /// @param amountIn The exact amount of 'tokenIn' that will be swapped for 'tokenOut'. - /// @param amountOutMinimum The minimum amount of 'amountOut' tokens that will be returned from the swap, this is used to prevent front running attacks, - /// proviging a pre calculated expected minimum amount. - /// @return amountOut The amount of 'tokenOut' received. - function swapExactInputSingle( - address tokenIn, address tokenOut, uint24 poolFee, - address from, uint256 amountIn, uint256 amountOutMinimum) - internal - returns (uint256 amountOut) { - // msg.sender 'from' address must approve this contract - - // Transfer the specified amount of 'tokenIn' to this contract. - if (from != address(this)) - TransferHelper.safeTransferFrom(tokenIn, from, address(this), amountIn); - - // Approve the router to spend tokenIn. - TransferHelper.safeApprove(tokenIn, address(swapRouter), amountIn); - - // Naively set amountOutMinimum to 0. In production, use an oracle or other data source to choose a safer value for amountOutMinimum. - // We also set the sqrtPriceLimitx96 to be 0 to ensure we swap our exact input amount. - ISwapRouter.ExactInputSingleParams memory params = - ISwapRouter.ExactInputSingleParams({ - tokenIn: tokenIn, - tokenOut: tokenOut, - fee: poolFee, - recipient: from, - deadline: block.timestamp, - amountIn: amountIn, - amountOutMinimum: amountOutMinimum, - sqrtPriceLimitX96: 0 - }); - - // The call to `exactInputSingle` executes the swap. - amountOut = swapRouter.exactInputSingle(params); - } - - /// @notice swapExactOutputSingle swaps a minimum possible amount of 'tokenIn' for a fixed amount of 'tokenOut'. - /// @dev The calling address must approve this contract to spend its 'tokenIn' for this function to succeed. As the amount of input 'tokenIn' is variable, - /// the calling address will need to approve for a slightly higher amount, anticipating some variance. - /// @param tokenIn TokenIn address sender wants to exchange. - /// @param tokenOut TokenOut address sender wants to get in exchange. - /// @param poolFee Pool fee. - /// @param from Tokens owner address we transfer tokens from to be exchanged. - /// @param amountOut The exact amount of 'tokenOut' to receive from the swap. - /// @param amountInMaximum The amount of 'tokenIn' we are willing to spend to receive the specified amount of 'tokenOut'. - /// @return amountIn The amount of 'tokenIn' actually spent in the swap. - function swapExactOutputSingle( - address tokenIn, address tokenOut, uint24 poolFee, - address from, uint256 amountOut, uint256 amountInMaximum) - internal - returns (uint256 amountIn) { - // Transfer the specified amount of 'tokenIn' to this contract. - bool differentFromTo = (from != address(this)); - if (differentFromTo) - TransferHelper.safeTransferFrom(tokenIn, from, address(this), amountInMaximum); - - // Approve the router to spend the specifed `amountInMaximum` of 'tokenIn'. - // In production, you should choose the maximum amount to spend based on oracles or other data sources to acheive a better swap. - TransferHelper.safeApprove(tokenIn, address(swapRouter), amountInMaximum); - - ISwapRouter.ExactOutputSingleParams memory params = - ISwapRouter.ExactOutputSingleParams({ - tokenIn: tokenIn, - tokenOut: tokenOut, - fee: poolFee, - recipient: from, - deadline: block.timestamp, - amountOut: amountOut, - amountInMaximum: amountInMaximum, - sqrtPriceLimitX96: 0 - }); - - // Executes the swap returning the amountIn needed to spend to receive the desired amountOut. - amountIn = swapRouter.exactOutputSingle(params); - - // For exact output swaps, the amountInMaximum may not have all been spent. - // If the actual amount spent (amountIn) is less than the specified maximum amount, we must refund the msg.sender and approve the swapRouter to spend 0. - if (amountIn < amountInMaximum) { - TransferHelper.safeApprove(tokenIn, address(swapRouter), 0); - if (differentFromTo) - TransferHelper.safeTransfer(tokenIn, _msgSender(), amountInMaximum - amountIn); - } - } -} diff --git a/contracts/uniswap/v3-core/contracts/test/TestUniswapV3Callee.sol b/contracts/uniswap/v3-core/contracts/test/TestUniswapV3Callee.sol deleted file mode 100644 index 1f13bf62..00000000 --- a/contracts/uniswap/v3-core/contracts/test/TestUniswapV3Callee.sol +++ /dev/null @@ -1,144 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity =0.7.6; - -import '@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol'; - -import '@uniswap/v3-core/contracts/libraries/SafeCast.sol'; -import '@uniswap/v3-core/contracts/libraries/TickMath.sol'; - -import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol'; -import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol'; -import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol'; - -import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol'; - -contract TestUniswapV3Callee is IUniswapV3MintCallback, IUniswapV3SwapCallback, IUniswapV3FlashCallback { - using SafeCast for uint256; - - function swapExact0For1( - address pool, - uint256 amount0In, - address recipient, - uint160 sqrtPriceLimitX96 - ) external { - IUniswapV3Pool(pool).swap(recipient, true, amount0In.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender)); - } - - function swap0ForExact1( - address pool, - uint256 amount1Out, - address recipient, - uint160 sqrtPriceLimitX96 - ) external { - IUniswapV3Pool(pool).swap(recipient, true, -amount1Out.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender)); - } - - function swapExact1For0( - address pool, - uint256 amount1In, - address recipient, - uint160 sqrtPriceLimitX96 - ) external { - IUniswapV3Pool(pool).swap(recipient, false, amount1In.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender)); - } - - function swap1ForExact0( - address pool, - uint256 amount0Out, - address recipient, - uint160 sqrtPriceLimitX96 - ) external { - IUniswapV3Pool(pool).swap(recipient, false, -amount0Out.toInt256(), sqrtPriceLimitX96, abi.encode(msg.sender)); - } - - function swapToLowerSqrtPrice( - address pool, - uint160 sqrtPriceX96, - address recipient - ) external { - IUniswapV3Pool(pool).swap(recipient, true, type(int256).max, sqrtPriceX96, abi.encode(msg.sender)); - } - - function swapToHigherSqrtPrice( - address pool, - uint160 sqrtPriceX96, - address recipient - ) external { - IUniswapV3Pool(pool).swap(recipient, false, type(int256).max, sqrtPriceX96, abi.encode(msg.sender)); - } - - event SwapCallback(int256 amount0Delta, int256 amount1Delta); - - function uniswapV3SwapCallback( - int256 amount0Delta, - int256 amount1Delta, - bytes calldata data - ) external override { - address sender = abi.decode(data, (address)); - - emit SwapCallback(amount0Delta, amount1Delta); - - if (amount0Delta > 0) { - IERC20Minimal(IUniswapV3Pool(msg.sender).token0()).transferFrom(sender, msg.sender, uint256(amount0Delta)); - } else if (amount1Delta > 0) { - IERC20Minimal(IUniswapV3Pool(msg.sender).token1()).transferFrom(sender, msg.sender, uint256(amount1Delta)); - } else { - // if both are not gt 0, both must be 0. - assert(amount0Delta == 0 && amount1Delta == 0); - } - } - - function mint( - address pool, - address recipient, - int24 tickLower, - int24 tickUpper, - uint128 amount - ) external { - IUniswapV3Pool(pool).mint(recipient, tickLower, tickUpper, amount, abi.encode(msg.sender)); - } - - event MintCallback(uint256 amount0Owed, uint256 amount1Owed); - event Mint(address sender, address indexed owner, int24 indexed tickLower, - int24 indexed tickUpper, uint128 amount, uint256 amount0, uint256 amount1); - - function uniswapV3MintCallback( - uint256 amount0Owed, - uint256 amount1Owed, - bytes calldata data - ) external override { - address sender = abi.decode(data, (address)); - - emit MintCallback(amount0Owed, amount1Owed); - if (amount0Owed > 0) - IERC20Minimal(IUniswapV3Pool(msg.sender).token0()).transferFrom(sender, msg.sender, amount0Owed); - if (amount1Owed > 0) - IERC20Minimal(IUniswapV3Pool(msg.sender).token1()).transferFrom(sender, msg.sender, amount1Owed); - } - - event FlashCallback(uint256 fee0, uint256 fee1); - - function flash( - address pool, - address recipient, - uint256 amount0, - uint256 amount1, - uint256 pay0, - uint256 pay1 - ) external { - IUniswapV3Pool(pool).flash(recipient, amount0, amount1, abi.encode(msg.sender, pay0, pay1)); - } - - function uniswapV3FlashCallback( - uint256 fee0, - uint256 fee1, - bytes calldata data - ) external override { - emit FlashCallback(fee0, fee1); - - (address sender, uint256 pay0, uint256 pay1) = abi.decode(data, (address, uint256, uint256)); - - if (pay0 > 0) IERC20Minimal(IUniswapV3Pool(msg.sender).token0()).transferFrom(sender, msg.sender, pay0); - if (pay1 > 0) IERC20Minimal(IUniswapV3Pool(msg.sender).token1()).transferFrom(sender, msg.sender, pay1); - } -} diff --git a/contracts/uniswap/v3-core/contracts/test/TickMathTest.sol b/contracts/uniswap/v3-core/contracts/test/TickMathTest.sol deleted file mode 100644 index a814480a..00000000 --- a/contracts/uniswap/v3-core/contracts/test/TickMathTest.sol +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity =0.7.6; - -import '@uniswap/v3-core/contracts/libraries/TickMath.sol'; - -contract TickMathTest { - function getSqrtRatioAtTick(int24 tick) external pure returns (uint160) { - return TickMath.getSqrtRatioAtTick(tick); - } - - function getGasCostOfGetSqrtRatioAtTick(int24 tick) external view returns (uint256) { - uint256 gasBefore = gasleft(); - TickMath.getSqrtRatioAtTick(tick); - return gasBefore - gasleft(); - } - - function getTickAtSqrtRatio(uint160 sqrtPriceX96) external pure returns (int24) { - return TickMath.getTickAtSqrtRatio(sqrtPriceX96); - } - - function getGasCostOfGetTickAtSqrtRatio(uint160 sqrtPriceX96) external view returns (uint256) { - uint256 gasBefore = gasleft(); - TickMath.getTickAtSqrtRatio(sqrtPriceX96); - return gasBefore - gasleft(); - } - - function MIN_SQRT_RATIO() external pure returns (uint160) { - return TickMath.MIN_SQRT_RATIO; - } - - function MAX_SQRT_RATIO() external pure returns (uint160) { - return TickMath.MAX_SQRT_RATIO; - } -} \ No newline at end of file diff --git a/contracts/uniswap/v3-core/contracts/test/UniswapV3PoolSwapTest.sol b/contracts/uniswap/v3-core/contracts/test/UniswapV3PoolSwapTest.sol deleted file mode 100644 index b681068e..00000000 --- a/contracts/uniswap/v3-core/contracts/test/UniswapV3PoolSwapTest.sol +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity =0.7.6; - -import '@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol'; - -import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol'; -import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol'; - -contract UniswapV3PoolSwapTest is IUniswapV3SwapCallback { - int256 private _amount0Delta; - int256 private _amount1Delta; - - function getSwapResult( - address pool, - bool zeroForOne, - int256 amountSpecified, - uint160 sqrtPriceLimitX96 - ) - external - returns ( - int256 amount0Delta, - int256 amount1Delta, - uint160 nextSqrtRatio - ) - { - (amount0Delta, amount1Delta) = IUniswapV3Pool(pool).swap( - address(0), - zeroForOne, - amountSpecified, - sqrtPriceLimitX96, - abi.encode(msg.sender) - ); - - (nextSqrtRatio, , , , , , ) = IUniswapV3Pool(pool).slot0(); - } - - function uniswapV3SwapCallback( - int256 amount0Delta, - int256 amount1Delta, - bytes calldata data - ) external override { - address sender = abi.decode(data, (address)); - - if (amount0Delta > 0) { - IERC20Minimal(IUniswapV3Pool(msg.sender).token0()).transferFrom(sender, msg.sender, uint256(amount0Delta)); - } else if (amount1Delta > 0) { - IERC20Minimal(IUniswapV3Pool(msg.sender).token1()).transferFrom(sender, msg.sender, uint256(amount1Delta)); - } - } -} diff --git a/contracts/utils/ETHUtils.sol b/contracts/utils/ETHUtils.sol deleted file mode 100644 index f67435cf..00000000 --- a/contracts/utils/ETHUtils.sol +++ /dev/null @@ -1,57 +0,0 @@ -pragma solidity >=0.6.0 <0.8.0; -//pragma solidity =0.7.6; - -//import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../IERC20View.sol"; - -/// @title Blockchain contract used for utilities such as: -/// -read ERC20 functions on the fly -/// -read block attributes from the blockchain -contract ETHUtils { - - /// @notice constructor - constructor() { } - - /// @notice Get token name given token address. - /// @dev This is an utility function for DApp layer. - /// @param tokenAddress The token address. - /// @return token name. - function name(address tokenAddress) external view returns (string memory) { - return IERC20View(tokenAddress).name(); - } - - /// @notice Get token symbol given token address. - /// @dev This is an utility function for DApp layer. - /// @param tokenAddress The token address. - /// @return token symbol. - function symbol(address tokenAddress) external view returns (string memory) { - return IERC20View(tokenAddress).symbol(); - } - - /// @notice Get token decimals given token address. - /// @dev This is an utility function for DApp layer when converting to float numbers. - /// @param tokenAddress The token address. - /// @return token decimals. - function decimals(address tokenAddress) external view returns (uint8) { - return IERC20View(tokenAddress).decimals(); - } - - /// @notice get current block number - /// @return current block number - function blockNumber() external view returns (uint256) { - return block.number; - } - - /// @notice Get current block timestamp - /// @return current block timestamp - function blockTimestamp() external view returns (uint256) { - return block.timestamp; - } - - /// @notice get current block number and timestamp - /// @return current block number - /// @return current block timestamp - function blockNumberAndTimestamp() external view returns (uint256, uint256) { - return (block.number, block.timestamp); - } -} diff --git a/contracts/Migrations.sol b/contracts/utils/Migrations.sol similarity index 94% rename from contracts/Migrations.sol rename to contracts/utils/Migrations.sol index b69e87d2..980b75e2 100644 --- a/contracts/Migrations.sol +++ b/contracts/utils/Migrations.sol @@ -1,4 +1,4 @@ -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; contract Migrations { address public owner; diff --git a/contracts/StakingContract.sol b/contracts/utils/StakingContract.sol similarity index 87% rename from contracts/StakingContract.sol rename to contracts/utils/StakingContract.sol index 90a60f64..946ca4e7 100644 --- a/contracts/StakingContract.sol +++ b/contracts/utils/StakingContract.sol @@ -1,14 +1,15 @@ // SPDX-License-Identifier: MIT -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/Pausable.sol"; -import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import "./utils/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; +import "../access/Ownable.sol"; contract StakingContract is Pausable, Ownable { - using SafeMath for uint256; + using Math for uint256; mapping(uint256 => ProductAPR) public products; /* Available Products */ uint256[] public productIds; /* Available Product Ids*/ @@ -18,7 +19,7 @@ contract StakingContract is Pausable, Ownable { uint256 constant private year = 365 days; - ERC20 public erc20; + IERC20 public erc20; address public erc721; @@ -54,7 +55,7 @@ contract StakingContract is Pausable, Ownable { constructor(address _tokenAddress, address _nftAddress) public { - erc20 = ERC20(_tokenAddress); + erc20 = IERC20(_tokenAddress); erc721 = _nftAddress; } @@ -70,7 +71,8 @@ contract StakingContract is Pausable, Ownable { /* Available Tokens to he APRed by future subscribers */ function availableTokens() public view returns (uint256) { - return heldTokens().sub(futureLockedTokens()); + (, uint256 result) = heldTokens().trySub(futureLockedTokens()); + return result; } function subscribeProduct(uint256 _product_id, uint256 _amount) external whenNotPaused { @@ -113,14 +115,15 @@ contract StakingContract is Pausable, Ownable { require(erc20.transferFrom(msg.sender, address(this), _amount), "Transfer Failed"); /* Add to LockedTokens */ - lockedTokens = lockedTokens.add(_amount.add(futureAPRAmount)); + (, uint256 newFutureAmount) = _amount.tryAdd(futureAPRAmount); + (, uint256 newLockedTokens) = lockedTokens.tryAdd(newFutureAmount); + lockedTokens = newLockedTokens; uint256 subscription_id = incrementId; incrementId = incrementId + 1; /* Create SubscriptionAPR Object */ - SubscriptionAPR memory subscriptionAPR = SubscriptionAPR(subscription_id, _product_id, time, products[_product_id].endDate, _amount, - msg.sender, products[_product_id].APR, false, 0); + SubscriptionAPR memory subscriptionAPR = SubscriptionAPR(subscription_id, _product_id, time, products[_product_id].endDate, _amount, msg.sender, products[_product_id].APR, false, 0); /* Create new subscription */ mySubscriptions[msg.sender].push(subscription_id); @@ -159,7 +162,13 @@ contract StakingContract is Pausable, Ownable { function getAPRAmount(uint256 _APR, uint256 _startDate, uint256 _endDate, uint256 _amount) public pure returns(uint256) { - return ((_endDate.sub(_startDate)).mul(_APR).mul(_amount)).div(year.mul(100)); + (, uint256 timestamp) = _endDate.trySub(_startDate); + (, uint256 timestampAPR) = timestamp.tryMul(_APR); + (, uint256 APRAmount) = timestampAPR.tryMul(_amount); + (, uint256 yearMul) = year.tryMul(100); + (, uint256 result) = APRAmount.tryDiv(yearMul); + + return result; } function getProductIds() public view returns(uint256[] memory) { @@ -201,8 +210,8 @@ contract StakingContract is Pausable, Ownable { uint256 APRedAmount = getAPRAmount(subscription.APR, subscription.startDate, finishDate, subscription.amount); require(APRedAmount > 0, "APR amount has to be bigger than 0"); - uint256 totalAmount = subscription.amount.add(APRedAmount); - uint256 totalAmountWithFullAPR = subscription.amount.add(getAPRAmount(subscription.APR, subscription.startDate, products[_product_id].endDate, subscription.amount)); + (, uint256 totalAmount) = subscription.amount.tryAdd(APRedAmount); + (, uint256 totalAmountWithFullAPR) = subscription.amount.tryAdd(getAPRAmount(subscription.APR, subscription.startDate, products[_product_id].endDate, subscription.amount)); require(totalAmount > 0, "Total Amount has to be bigger than 0"); /* Update Subscription */ @@ -214,7 +223,8 @@ contract StakingContract is Pausable, Ownable { require(erc20.transfer(subscription.subscriberAddress, totalAmount), "Transfer has failed"); /* Sub to LockedTokens */ - lockedTokens = lockedTokens.sub(totalAmountWithFullAPR); + (, uint256 newLockedTokens) = lockedTokens.trySub(totalAmountWithFullAPR); + lockedTokens = newLockedTokens; } function getSubscription(uint256 _subscription_id, uint256 _product_id) external view returns (uint256, uint256, uint256, uint256, uint256, address, uint256, bool, uint256){ @@ -241,6 +251,6 @@ contract StakingContract is Pausable, Ownable { function changeTokenAddress(address _tokenAddress) external onlyOwner whenPaused { /* If Needed to Update the Token Address (ex : token swap) */ - erc20 = ERC20(_tokenAddress); + erc20 = IERC20(_tokenAddress); } } diff --git a/contracts/utils/Votable.sol b/contracts/utils/Votable.sol index 03cda4b2..2c88a11a 100644 --- a/contracts/utils/Votable.sol +++ b/contracts/utils/Votable.sol @@ -1,9 +1,9 @@ -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; +import "@openzeppelin/contracts/utils/math/Math.sol"; contract Votable { - using SafeMath for uint256; + using Math for uint256; /* EVENTS */ event voteCasted(address indexed voter, uint indexed pollID, uint256 vote, uint256 weight); @@ -71,8 +71,10 @@ contract Votable { for(uint i = 0; i < options.length; i++){ curPoll.options[i] = options[i]; } + (, uint256 timestampLength) = block.timestamp.tryAdd(_voteLength); + (, uint256 expirationTime) = timestampLength.tryMul(1 seconds); curPoll.optionsSize = options.length; - curPoll.expirationTime = block.timestamp.add(_voteLength).mul(1 seconds); + curPoll.expirationTime = expirationTime; curPoll.description = _description; emit pollCreated(msg.sender, pollCount, _description, _voteLength); @@ -161,7 +163,8 @@ contract Votable { bank[msg.sender].lockedTokens[_pollID] = getTokenStake(msg.sender); bank[msg.sender].participatedPolls.push(_pollID); - curPoll.votesPerOption[_voteId] = curPoll.votesPerOption[_voteId].add(getTokenStake(msg.sender)); + (, uint256 votesPerOptionId) = curPoll.votesPerOption[_voteId].tryAdd(getTokenStake(msg.sender)); + curPoll.votesPerOption[_voteId] = votesPerOptionId; curPoll.voterInfo[msg.sender] = Voter({ hasVoted: true, diff --git a/docker-compose.yml b/docker-compose.yml index ac81b9e6..e933f026 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,13 +7,10 @@ services: dockerfile: ./Dockerfile volumes: - "./src:/app/src" - - "./build:/app/build" + - "./build:/app/dist" - "./package.json:/app/package.json" - "./docs:/app/docs" - - "./docs-src:/app/docs-src" - "./contracts:/app/contracts" - - "./tests:/app/tests" - - "./migrations:/app/migrations" + - "./tests:/app/test" - "./hardhat.config.js:/app/hardhat.config.js" - - "./index.js:/app/index.js" - "./README.md:/app/README.md" diff --git a/docker-readme.md b/docker-readme.md index 015cd147..29240cf1 100644 --- a/docker-readme.md +++ b/docker-readme.md @@ -2,28 +2,8 @@ ## Requirements -- Docker CE - 19.03.3+ -- Docker Compose - 1.19.0+ - -## How to install or upgrade docker and docker-compose? - -#### Docker: - -```shell script -sudo curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh -``` - -**Notice**:If you already have Docker installed, this script can cause trouble. If you installed the current Docker package using this script and are using it again to update Docker. Or use official installation instructions: [Mac](https://docs.docker.com/docker-for-mac/install/), [Windows](https://docs.docker.com/docker-for-windows/install/), [Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/), [Other](https://docs.docker.com/install/#supported-platforms). - -#### Docker Compose: - -For linux: - -```shell script -sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose -``` - -For Mac or Windows take a look on: [official guides](https://docs.docker.com/compose/install/#install-compose). +- [Docker CE - 19.03.3+](https://docs.docker.com/engine/install/) +- [Docker Compose - 1.19.0+](https://docs.docker.com/compose/install/) ## Running containers @@ -41,18 +21,17 @@ make build make up ``` -#### Start npm watch: - -```shell script -make watch -``` - #### Run tests -```shell script +```shell make test ``` +#### Start hardhat node +```shell +make hardhat.start +``` + #### Stop containers ```shell script diff --git a/generate-typings.config.mjs b/generate-typings.config.mjs new file mode 100644 index 00000000..dfd676c1 --- /dev/null +++ b/generate-typings.config.mjs @@ -0,0 +1,26 @@ +export default { + /* import all json files on this directory */ + path: "artifacts/contracts", + + /* output abis to this directory */ + destination: "src/interfaces/generated/abi", + + /* implicitly include files on config.path, if it has value it will filter files from config.path */ + include: [ + /Network(Registry|V2)?/, + /BountyToken/, + /^ERC1155Ownable/, + /^ERC20(Ownable|Distribution|TokenLock|Capped)/, + /^ERC4626/, + /^ERC721(Collectibles|Standard)/, + /StakingContract/, + /Votable/, + /^(Governed|Ownable|Pausable)\.json$/, + ], + + /* file to be excluded */ + exclude: [ + /^[_I]/, // eagerly ignore _?Interfaces + /\.dbg\.json$/i // and ignore the dbg file created by hardhat + ], +} \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js new file mode 100644 index 00000000..65801f51 --- /dev/null +++ b/hardhat.config.js @@ -0,0 +1,29 @@ +/** @type import('hardhat/config').HardhatUserConfig */ +// eslint-disable-next-line @typescript-eslint/no-var-requires +require('dotenv').config(); + +const {CI_MNEMONIC} = process.env; +const ACCOUNT_BALANCE = "10000000000000000000000"; + +module.exports = { + solidity: { + version: "0.8.20", + settings: { + optimizer: { + enabled: true, + runs: 200 + } + } + }, + networks: { + hardhat: { + mining: { + auto: true, + interval: 1000 + }, + accounts: { + mnemonic: CI_MNEMONIC, accountsBalance: ACCOUNT_BALANCE, count: 10 + } + }, + } +}; diff --git a/how-to/contributing/creating-new-model.md b/how-to/contributing/creating-new-model.md index 60717bb7..4ae475a1 100644 --- a/how-to/contributing/creating-new-model.md +++ b/how-to/contributing/creating-new-model.md @@ -24,7 +24,7 @@ javascript and solidity, such as converting numbers or making sure arguments are the payload through the chain. If any of the contract functions return an object, you should create a new util under `src/utils` that will receive -the parameters and output parsed object; An example of this can be seen at [`network-v2.ts:getOraclesResume()`](../../src/models/network-v2.ts) +the parameters and output parsed object; An example of this can be seen at [`network-v2.ts:getOraclesResume()`](../../src/models/bepro/network-v2.ts) where `oraclesResume` is used to parse the entry arguments into readable javascript values and respect the return type provided by launchpad when we transpiled the contract. @@ -34,10 +34,10 @@ contract and these can be imported from `@utils/numbers.ts` | fn | description | example | |:----------------------------|:--------------------------------------------------------------|:---------------------------------------------------------------------| -| toSmartContractDecimals | convert a simple number into a (text) big number representation | [erc20.ts](../../src/models/erc20.ts#L42) | -| fromSmartContractDecimals | convert a ERC20 token value into javascript number | [erc20.ts](../../src/models/erc20.ts#L47) | -| toSmartContractDate | converts a javascript date (ms) to a smart contract date (s) | [erc20-distribution.ts](../../src/models/erc20-distribution.ts#L109) | -| fromSmartContractDate | converts from a smart contract date (s) to javascript date (ms) | [staking-product.ts](../../src/utils/staking-product.ts#L25) | +| toSmartContractDecimals | convert a simple number into a (text) big number representation | [erc20.ts](../../src/models/token/ERC20/erc20.ts#L42) | +| fromSmartContractDecimals | convert a ERC20 token value into javascript number | [erc20.ts](../../src/models/token/ERC20/erc20.ts#L47) | +| toSmartContractDate | converts a javascript date (ms) to a smart contract date (s) | [erc20-distribution.ts](../../src/models/token/ERC20/erc20-distribution.ts#L109) | +| fromSmartContractDate | converts from a smart contract date (s) to javascript date (ms) | [staking-product.ts](../../src/utils/models/staking-product.ts#L25) | For constant values, there is the `@utils/constants.ts` file that's self-explanatory. diff --git a/how-to/contributing/integration-tests.md b/how-to/contributing/integration-tests.md index 6df5c089..afd9964b 100644 --- a/how-to/contributing/integration-tests.md +++ b/how-to/contributing/integration-tests.md @@ -6,18 +6,18 @@ that the file has on its `src` counterpart. ### Available utilities -|fn|description| example | -|---|---|-----------------------------------------------------------------| -|defaultWeb3Connection|A helper function to start a web3connection from process.env files| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L22) | -|modelExtensionDeployer|Agnostic model deployer to help out in the deployment of initial contracts| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L34) | -|erc20Deployer|Helper to deploy ERC20 tokens| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L41) | -|getChainDate|Return chain date| [sablier.spec.ts](../../test/models/sablier.spec.ts#L77) | -|hasTxBlockNumber|Assert that the promise returns a block number| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L71) | -|revertChain|Revert the chain to its default state| [network-v2.spec.ts](../../test/utils/index.ts#L114) | -|increaseTime|Advance in time by mining a block on the chain| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L199) | -|shouldBeRejected|Helper to assert that the promise needs to be rejected| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L322) | -|newWeb3Account|Create a new account and return it| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L137) | -|getPrivateKeyFromFile|Returns the private key from the output provided by ganache| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L34) | +|fn|description| example | +|---|---|-------------------------------------------------------------------| +|defaultWeb3Connection|A helper function to start a web3connection from process.env files| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L22) | +|modelExtensionDeployer|Agnostic model deployer to help out in the deployment of initial contracts| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L34) | +|erc20Deployer|Helper to deploy ERC20 tokens| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L41) | +|getChainDate|Return chain date| [sablier.spec.ts](../../test/models/erc20-token-lock.spec.ts#L52) | +|hasTxBlockNumber|Assert that the promise returns a block number| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L71) | +|revertChain|Revert the chain to its default state| [network-v2.spec.ts](../../test/utils/index.ts#L114) | +|increaseTime|Advance in time by mining a block on the chain| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L199) | +|shouldBeRejected|Helper to assert that the promise needs to be rejected| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L322) | +|newWeb3Account|Create a new account and return it| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L137) | +|getPrivateKeyFromFile|Returns the private key from the output provided by ganache| [network-v2.spec.ts](../../test/models/network-v2.spec.ts#L34) | ## Writing tests Written tests should follow this logic: diff --git a/how-to/contributing/readme.md b/how-to/contributing/readme.md index 4aa27bb5..2e8cb98f 100644 --- a/how-to/contributing/readme.md +++ b/how-to/contributing/readme.md @@ -2,5 +2,30 @@ Read our [CoC](../../CODE_OF_CONDUCT.md) and our [Contributing Guide](../../CONTRIBUTING.md) -- [Creating new Models](./creating-new-model.md) -- [Integration tests](./integration-tests.md) \ No newline at end of file +# Setting up the environment + +After having checked out the main branch and followed the contributing guide, you can issue `npm install` under your cloned dappkit directory. + +## Compile contracts +```bash +$ npm run compile-contracts +``` + +## Build typescript solution +```bash +$ npm run compile-ts +``` + +## Setting up e2e +1. copy `.env.dist` to `.env` file +2. fill in the values + +```bash +$ npm run test-ci +``` + +--- + +### You can now: +- [Create new Models](./creating-new-model.md) +- [Create integration tests](./integration-tests.md) \ No newline at end of file diff --git a/how-to/readme.md b/how-to/readme.md index 7b095aa2..b153fbdc 100644 --- a/how-to/readme.md +++ b/how-to/readme.md @@ -4,4 +4,6 @@ - [How to load custom ABI or contracts with dappkit?](./custom-abi.md) - [How to use @taikai/dappkit with your own Solidity project](./custom-project.md) - [How to use Wallet Connect / Custom Provider](./use-wallet-connect.md) -- [How to sign in with ethereum EIP4361](./eip4361-how-to.md) \ No newline at end of file +- [How to sign in with ethereum EIP4361](./eip4361-how-to.md) +- [Create new model](./contributing/creating-new-model.md) +- [Test integration](./contributing/integration-tests.md) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fbdd8a4c..00000000 --- a/package-lock.json +++ /dev/null @@ -1,34069 +0,0 @@ -{ - "name": "@taikai/dappkit", - "version": "2.3.4", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@taikai/dappkit", - "version": "2.3.4", - "license": "ISC", - "dependencies": { - "bignumber.js": "^9.0.2", - "date-fns": "^2.27.0", - "ipfs-http-client": "^50.1.2", - "web3": "^1.8.2", - "web3-eth": "^1.8.2", - "web3-utils": "^1.8.2" - }, - "devDependencies": { - "@openzeppelin/contracts": "^3.4.2", - "@taikai/dappkit-launchpad": "^0.0.19", - "@truffle/workflow-compile": "4.0.21", - "@types/chai": "^4.3.0", - "@types/chai-like": "^1.1.1", - "@types/chai-things": "^0.0.35", - "@types/mocha": "^9.0.0", - "@types/yargs": "^17.0.7", - "@typescript-eslint/eslint-plugin": "^5.11.0", - "@typescript-eslint/parser": "^5.11.0", - "@uniswap/v3-core": "^1.0.0", - "@uniswap/v3-periphery": "^1.1.1", - "chai": "^4.3.4", - "chai-like": "^1.1.1", - "chai-things": "^0.2.0", - "dotenv": "^8.2.0", - "eslint": "^8.8.0", - "find": "^0.3.0", - "ganache": "^7.0.0-beta.2", - "ganache-time-traveler": "^1.0.5", - "mocha": "^9.1.3", - "mocha-multi-reporters": "^1.5.1", - "ts-node": "^10.4.0", - "tsc-alias": "^1.5.0", - "tsconfig-paths": "^3.12.0", - "tscpaths": "^0.0.9", - "typedoc": "^0.22.10", - "typescript": "4.5.3" - }, - "engines": { - "node": "^14 || ^16" - } - }, - "node_modules/@apollo/protobufjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", - "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/@apollo/usage-reporting-protobuf": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.0.2.tgz", - "integrity": "sha512-GfE8aDqi/lAFut95pjH9IRvH0zGsQ5G/2lYL0ZLZfML7ArX+A4UVHFANQcPCcUYGE6bI6OPhLekg4Vsjf6B1cw==", - "dev": true, - "optional": true, - "dependencies": { - "@apollo/protobufjs": "1.2.7" - } - }, - "node_modules/@apollo/utils.dropunuseddefinitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/@apollo/utils.keyvaluecache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", - "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", - "dev": true, - "optional": true, - "dependencies": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "7.10.1 - 7.13.1" - } - }, - "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@apollo/utils.logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz", - "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==", - "dev": true, - "optional": true - }, - "node_modules/@apollo/utils.printwithreducedwhitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/@apollo/utils.removealiases": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/@apollo/utils.sortast": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", - "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", - "dev": true, - "optional": true, - "dependencies": { - "lodash.sortby": "^4.7.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/@apollo/utils.stripsensitiveliterals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/@apollo/utils.usagereporting": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz", - "integrity": "sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==", - "dev": true, - "optional": true, - "dependencies": { - "@apollo/usage-reporting-protobuf": "^4.0.0", - "@apollo/utils.dropunuseddefinitions": "^1.1.0", - "@apollo/utils.printwithreducedwhitespace": "^1.1.0", - "@apollo/utils.removealiases": "1.0.0", - "@apollo/utils.sortast": "^1.1.0", - "@apollo/utils.stripsensitiveliterals": "^1.2.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/@apollographql/apollo-tools": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8", - "npm": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@apollographql/graphql-playground-html": { - "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", - "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", - "dev": true, - "optional": true, - "dependencies": { - "xss": "^1.0.8" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", - "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ensdomains/address-encoder": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", - "integrity": "sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==", - "dev": true, - "dependencies": { - "bech32": "^1.1.3", - "blakejs": "^1.1.0", - "bn.js": "^4.11.8", - "bs58": "^4.0.1", - "crypto-addr-codec": "^0.1.7", - "nano-base32": "^1.0.1", - "ripemd160": "^2.0.2" - } - }, - "node_modules/@ensdomains/address-encoder/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@ensdomains/ens": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", - "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", - "deprecated": "Please use @ensdomains/ens-contracts", - "dev": true, - "dependencies": { - "bluebird": "^3.5.2", - "eth-ens-namehash": "^2.0.8", - "solc": "^0.4.20", - "testrpc": "0.0.1", - "web3-utils": "^1.0.0-beta.31" - } - }, - "node_modules/@ensdomains/ens/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/@ensdomains/ens/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/@ensdomains/ens/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@ensdomains/ens/node_modules/require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/@ensdomains/ens/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@ensdomains/ens/node_modules/solc": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", - "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", - "dev": true, - "dependencies": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" - }, - "bin": { - "solcjs": "solcjs" - } - }, - "node_modules/@ensdomains/ens/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ensdomains/ens/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "node_modules/@ensdomains/ens/node_modules/yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", - "dev": true, - "dependencies": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - } - }, - "node_modules/@ensdomains/ens/node_modules/yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - } - }, - "node_modules/@ensdomains/ensjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz", - "integrity": "sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.4.4", - "@ensdomains/address-encoder": "^0.1.7", - "@ensdomains/ens": "0.4.5", - "@ensdomains/resolver": "0.2.4", - "content-hash": "^2.5.2", - "eth-ens-namehash": "^2.0.8", - "ethers": "^5.0.13", - "js-sha3": "^0.8.0" - } - }, - "node_modules/@ensdomains/ensjs/node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/@ensdomains/resolver": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", - "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", - "deprecated": "Please use @ensdomains/ens-contracts", - "dev": true - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" - } - }, - "node_modules/@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", - "dependencies": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/json-wallets/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/sha2/node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key/node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@graphql-tools/batch-execute": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz", - "integrity": "sha512-hRVDduX0UDEneVyEWtc2nu5H2PxpfSfM/riUlgZvo/a/nG475uyehxR5cFGvTEPEQUKY3vGIlqvtRigzqTfCew==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/utils": "8.9.0", - "dataloader": "2.1.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/delegate": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.8.1.tgz", - "integrity": "sha512-NDcg3GEQmdEHlnF7QS8b4lM1PSF+DKeFcIlLEfZFBvVq84791UtJcDj8734sIHLukmyuAxXMfA1qLd2l4lZqzA==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/batch-execute": "8.5.1", - "@graphql-tools/schema": "8.5.1", - "@graphql-tools/utils": "8.9.0", - "dataloader": "2.1.0", - "tslib": "~2.4.0", - "value-or-promise": "1.0.11" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/mock": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.12.tgz", - "integrity": "sha512-bEjj52T5idjzqFXfDZPFfPZDPFEjVmayYA6RYqMxM3Qdv5JJ8pSMEGDBcXhinbQudPKdRkLmR17usNmRMpUQEg==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/schema": "9.0.10", - "@graphql-tools/utils": "9.1.1", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/merge": { - "version": "8.3.12", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.12.tgz", - "integrity": "sha512-BFL8r4+FrqecPnIW0H8UJCBRQ4Y8Ep60aujw9c/sQuFmQTiqgWgpphswMGfaosP2zUinDE3ojU5wwcS2IJnumA==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/utils": "9.1.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.10.tgz", - "integrity": "sha512-lV0o4df9SpPiaeeDAzgdCJ2o2N9Wvsp0SMHlF2qDbh9aFCFQRsXuksgiDm2yTgT3TG5OtUes/t0D6uPjPZFUbQ==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/merge": "8.3.12", - "@graphql-tools/utils": "9.1.1", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/utils": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.1.tgz", - "integrity": "sha512-DXKLIEDbihK24fktR2hwp/BNIVwULIHaSTNTNhXS+19vgT50eX9wndx1bPxGwHnVBOONcwjXy0roQac49vdt/w==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/schema": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", - "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/merge": "8.3.1", - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@josephg/resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==", - "dev": true, - "optional": true - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@multiformats/base-x": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", - "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@openzeppelin/contracts": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz", - "integrity": "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==", - "dev": true - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@solidity-parser/parser": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", - "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", - "dev": true, - "optional": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/@sovpro/delimited-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sovpro/delimited-stream/-/delimited-stream-1.1.0.tgz", - "integrity": "sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@taikai/dappkit-launchpad": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/@taikai/dappkit-launchpad/-/dappkit-launchpad-0.0.19.tgz", - "integrity": "sha512-6sXp4BY5QX+hlWQxOu7p1/VYS/xBK+ys25PoSbZsqOiRWJJbNsqMeqlK0QHbjhrg7JD0L/KEtBf58Qut7nEisQ==", - "dev": true, - "dependencies": { - "change-case": "^4.1.2", - "handlebars": "^4.7.7", - "yargs": "^17.4.1" - }, - "bin": { - "dlt": "bin/transpile.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@truffle/abi-utils": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.5.tgz", - "integrity": "sha512-nGIMNDjl1NhTxI5lSecOWoLFH8A+aDRPrMejke6Cb2ok8FWyTPCaHmlC8S0Kdi/Egp9m3CNI1TYsy9w9Y3E3jA==", - "dev": true, - "dependencies": { - "change-case": "3.0.2", - "fast-check": "3.1.1", - "web3-utils": "1.7.4" - } - }, - "node_modules/@truffle/abi-utils/node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/@truffle/abi-utils/node_modules/change-case": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", - "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", - "dev": true, - "dependencies": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" - } - }, - "node_modules/@truffle/abi-utils/node_modules/constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", - "dev": true, - "dependencies": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/@truffle/abi-utils/node_modules/dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/@truffle/abi-utils/node_modules/header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" - } - }, - "node_modules/@truffle/abi-utils/node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/@truffle/abi-utils/node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/@truffle/abi-utils/node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/@truffle/abi-utils/node_modules/path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/@truffle/abi-utils/node_modules/sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" - } - }, - "node_modules/@truffle/abi-utils/node_modules/snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/@truffle/abi-utils/node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/@truffle/abi-utils/node_modules/upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", - "dev": true, - "dependencies": { - "upper-case": "^1.1.1" - } - }, - "node_modules/@truffle/abi-utils/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/artifactor": { - "version": "4.0.176", - "resolved": "https://registry.npmjs.org/@truffle/artifactor/-/artifactor-4.0.176.tgz", - "integrity": "sha512-wolvrYHb3FPpOV7YGxNsRQLuqbjaUEVmbF9Fq7SdoU4vHAqqvM/TudlYcoIAewOBqpvE2XaRLzSofJ2DjI6S+g==", - "dev": true, - "dependencies": { - "@truffle/contract-schema": "^3.4.11", - "fs-extra": "^9.1.0", - "lodash": "^4.17.21" - } - }, - "node_modules/@truffle/blockchain-utils": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.5.tgz", - "integrity": "sha512-WwvKafKYbU0H3ewk3Y3ZZrWxPEYDEtqNkn1BZFPP8GkbDLNLbgZSW6cA0fGhe8veqvkK3q+CmGufr1/tBDW+OQ==", - "dev": true - }, - "node_modules/@truffle/code-utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-3.0.1.tgz", - "integrity": "sha512-6cv318jVAvEvg7u7jFq1G6P6K1CMXKNG2btg2qgpmsTQURp4KrqeVrrZegYgx9l4hocpNZ8UAYc9Qw5ATrDg4g==", - "dev": true, - "optional": true, - "dependencies": { - "cbor": "^5.2.0" - } - }, - "node_modules/@truffle/codec": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.10.tgz", - "integrity": "sha512-+uPnImtjNUzRhWOp5GG9AeSEuG1o9iVRpCsodQ04podKqYagtjNOKSe7jqNLJCbZ1Vpbvztmb9KzbwOJTLZS9A==", - "dev": true, - "dependencies": { - "@truffle/abi-utils": "^0.3.5", - "@truffle/compile-common": "^0.9.1", - "big.js": "^6.0.3", - "bn.js": "^5.1.3", - "cbor": "^5.2.0", - "debug": "^4.3.1", - "lodash": "^4.17.21", - "semver": "7.3.7", - "utf8": "^3.0.0", - "web3-utils": "1.7.4" - } - }, - "node_modules/@truffle/codec/node_modules/@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "node_modules/@truffle/codec/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/compile-common": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.7.34.tgz", - "integrity": "sha512-NA8HuTCw6pgTpCyMd7M70Ii8AVD921R95UnXB3dwVWwEyV1OksaAsTKfdLxeLnFR4ISkK6o2NqpFb/lM3+V+9w==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "node_modules/@truffle/compile-solidity": { - "version": "6.0.51", - "resolved": "https://registry.npmjs.org/@truffle/compile-solidity/-/compile-solidity-6.0.51.tgz", - "integrity": "sha512-DZaBZvIFM1N2yqlEz4GqagF24+k8g/l7FhCUN3rZT7uXKB+BoXRRILX1jvZn0tOARD6u3odttleuEXDXDSgphg==", - "dev": true, - "dependencies": { - "@truffle/compile-common": "^0.9.1", - "@truffle/config": "^1.3.45", - "@truffle/contract-sources": "^0.2.0", - "@truffle/expect": "^0.1.4", - "@truffle/profiler": "^0.1.37", - "axios": "0.27.2", - "axios-retry": "^3.1.9", - "debug": "^4.3.1", - "fs-extra": "^9.1.0", - "iter-tools": "^7.0.2", - "lodash": "^4.17.21", - "node-abort-controller": "^3.0.1", - "original-require": "^1.0.1", - "require-from-string": "^2.0.2", - "semver": "7.3.7", - "solc": "0.8.17" - } - }, - "node_modules/@truffle/compile-solidity/node_modules/@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "node_modules/@truffle/compile-vyper": { - "version": "3.1.86", - "resolved": "https://registry.npmjs.org/@truffle/compile-vyper/-/compile-vyper-3.1.86.tgz", - "integrity": "sha512-ZfDOn9lpBwdGf/4wA+uTE+jueARj4GdTqSK0CX+ye36r05aYTyOKIdmeu1LiSjjg0XyAloUzXxkwKukukRUxfg==", - "dev": true, - "dependencies": { - "@truffle/compile-common": "^0.9.1", - "@truffle/config": "^1.3.45", - "@truffle/contract-sources": "^0.2.0", - "@truffle/profiler": "^0.1.37", - "@truffle/resolver": "^9.0.24", - "colors": "1.4.0", - "debug": "^4.3.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", - "semver": "7.3.7" - } - }, - "node_modules/@truffle/compile-vyper/node_modules/@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "node_modules/@truffle/config": { - "version": "1.3.29", - "resolved": "https://registry.npmjs.org/@truffle/config/-/config-1.3.29.tgz", - "integrity": "sha512-lj8SL2388m2IQ19OtwB3PbuCSGegCr32MTtS2AZW5JVxaKGMAGiWyaTl36dT870FCaGTYKSI9g2eAF/NbbtqXQ==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.1.0", - "@truffle/events": "^0.1.6", - "@truffle/provider": "^0.2.55", - "conf": "^10.0.2", - "find-up": "^2.1.0", - "lodash": "^4.17.21", - "original-require": "^1.0.1" - } - }, - "node_modules/@truffle/contract": { - "version": "4.6.8", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.8.tgz", - "integrity": "sha512-cndUs/3WaF1RUz3whQHvFQS/9uTyadR5iiyNdOdvF4OYLN3agM3lLY8YIEGRgz6F9CELBoUnD15daXLEj6RGuw==", - "dev": true, - "dependencies": { - "@ensdomains/ensjs": "^2.1.0", - "@truffle/blockchain-utils": "^0.1.5", - "@truffle/contract-schema": "^3.4.11", - "@truffle/debug-utils": "^6.0.41", - "@truffle/error": "^0.1.1", - "@truffle/interface-adapter": "^0.5.25", - "bignumber.js": "^7.2.1", - "debug": "^4.3.1", - "ethers": "^4.0.32", - "web3": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "node_modules/@truffle/contract-schema": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.11.tgz", - "integrity": "sha512-wReyVZUPyU9Zy5PSCugBLG1nnruBmRAJ/gmoirQiJ9N2n+s1iGBTY49tkDqFMz3XUUE0kplfdb9YKZJlLkTWzQ==", - "dev": true, - "dependencies": { - "ajv": "^6.10.0", - "debug": "^4.3.1" - } - }, - "node_modules/@truffle/contract-sources": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@truffle/contract-sources/-/contract-sources-0.2.0.tgz", - "integrity": "sha512-S14SKQW3EGbLip3rBU7i+VtB5ImBfBz6TpviSXxQsYY6Udy+aqJEmTkVKA/KhHeOG6yQyZqvb4dWIbMtEh+tYg==", - "dev": true, - "dependencies": { - "debug": "^4.3.1", - "glob": "^7.1.6" - } - }, - "node_modules/@truffle/contract/node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/contract/node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/contract/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/@truffle/contract/node_modules/bignumber.js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", - "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/@truffle/contract/node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/contract/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@truffle/contract/node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/contract/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@truffle/contract/node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/@truffle/contract/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/contract/node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@truffle/contract/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/contract/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@truffle/contract/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "node_modules/@truffle/contract/node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@truffle/contract/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/contract/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/contract/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "node_modules/@truffle/contract/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/@truffle/contract/node_modules/web3": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", - "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-bzz": "1.7.4", - "web3-core": "1.7.4", - "web3-eth": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-shh": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-bzz": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", - "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", - "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-requestmanager": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-core-method": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", - "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", - "dev": true, - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-core-requestmanager": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", - "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", - "dev": true, - "dependencies": { - "util": "^0.12.0", - "web3-core-helpers": "1.7.4", - "web3-providers-http": "1.7.4", - "web3-providers-ipc": "1.7.4", - "web3-providers-ws": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-core-subscriptions": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", - "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-core/node_modules/bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/@truffle/contract/node_modules/web3-eth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", - "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", - "dev": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-accounts": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-eth-ens": "1.7.4", - "web3-eth-iban": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-eth-accounts": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", - "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.2", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-eth-contract": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", - "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-eth-ens": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", - "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", - "dev": true, - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-eth-personal": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", - "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", - "dev": true, - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-net": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", - "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", - "dev": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-providers-http": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", - "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", - "dev": true, - "dependencies": { - "web3-core-helpers": "1.7.4", - "xhr2-cookies": "1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-providers-ipc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", - "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", - "dev": true, - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-providers-ws": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", - "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-shh": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", - "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-net": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/db": { - "version": "1.0.23", - "resolved": "https://registry.npmjs.org/@truffle/db/-/db-1.0.23.tgz", - "integrity": "sha512-wixnU5++aCqnuk1u7N4FFvmrP1z8WsLzGSbbWGcIa5YB/SYDPTGgapJNP5h+P+HB1XMOSRCAbeLW6D7cw+rWPg==", - "dev": true, - "optional": true, - "dependencies": { - "@graphql-tools/delegate": "^8.4.3", - "@graphql-tools/schema": "^8.3.1", - "@truffle/abi-utils": "^0.3.2", - "@truffle/code-utils": "^3.0.0", - "@truffle/config": "^1.3.38", - "abstract-leveldown": "^7.2.0", - "apollo-server": "^3.6.3", - "debug": "^4.3.1", - "fs-extra": "^9.1.0", - "graphql": "^15.3.0", - "graphql-tag": "^2.12.6", - "json-stable-stringify": "^1.0.1", - "pascal-case": "^2.0.1", - "pluralize": "^8.0.0", - "pouchdb": "7.3.0", - "pouchdb-adapter-memory": "^7.1.1", - "pouchdb-adapter-node-websql": "^7.0.0", - "pouchdb-debug": "^7.1.1", - "pouchdb-find": "^7.0.0", - "web3-utils": "1.7.4" - } - }, - "node_modules/@truffle/db-loader": { - "version": "0.1.33", - "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.1.33.tgz", - "integrity": "sha512-OHt9Lu2xI+DVCC8WdEtNJrZFbGq9yFEBPjPJZVTDQI4SMd7I6tQmRmusXTKCSCDEHE0xAp02stmKjSHC+pxJpA==", - "dev": true, - "optionalDependencies": { - "@truffle/db": "^1.0.23" - } - }, - "node_modules/@truffle/db/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "optional": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/debug-utils": { - "version": "6.0.41", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.41.tgz", - "integrity": "sha512-8sk0fmcN3s11cvAJyODoDPWK9W730c6UAreyeHNj03PWg04D+YUqHpRlV2evdqAx2om1p+Xp03eQag15mg//jQ==", - "dev": true, - "dependencies": { - "@truffle/codec": "^0.14.10", - "@trufflesuite/chromafi": "^3.0.0", - "bn.js": "^5.1.3", - "chalk": "^2.4.2", - "debug": "^4.3.1", - "highlightjs-solidity": "^2.0.5" - } - }, - "node_modules/@truffle/error": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.1.1.tgz", - "integrity": "sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA==", - "dev": true - }, - "node_modules/@truffle/events": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@truffle/events/-/events-0.1.6.tgz", - "integrity": "sha512-x36fB83En+K91Uoiv47qZ3leeo3AhVFh9i/wtgHQxDXzOdSjKR7bD8Y4lZua2MABg9Kg5Z4r8iWrPfeWLeqJmg==", - "dev": true, - "dependencies": { - "@truffle/spinners": "^0.2.0", - "emittery": "^0.4.1", - "web3-utils": "1.5.3" - } - }, - "node_modules/@truffle/events/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@truffle/events/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/events/node_modules/web3-utils": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.3.tgz", - "integrity": "sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/expect": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@truffle/expect/-/expect-0.1.4.tgz", - "integrity": "sha512-uL0FBL5yWbyMB0Y5sEPeYPWwSmAcx/hnXr/GKOQjDGsuBth6XUySQ5gTp+MTPrrGvwEx+zduqvvvT0OwYnd14Q==", - "dev": true - }, - "node_modules/@truffle/external-compile": { - "version": "2.0.64", - "resolved": "https://registry.npmjs.org/@truffle/external-compile/-/external-compile-2.0.64.tgz", - "integrity": "sha512-nJR/rnTY55a8SwtGtqMlfSbOZU4g9wcRTrzG8d6Ber+cRPX7PAfZRzSgXbJV+VSCDjGSLA04gRpsbHv/cf6Tfg==", - "dev": true, - "dependencies": { - "@truffle/compile-common": "^0.9.1", - "@truffle/config": "^1.3.45", - "@truffle/contract-schema": "^3.4.11", - "@truffle/expect": "^0.1.4", - "debug": "^4.3.1", - "glob": "^7.1.6", - "web3-utils": "1.7.4" - } - }, - "node_modules/@truffle/external-compile/node_modules/@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "node_modules/@truffle/external-compile/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter": { - "version": "0.5.25", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.25.tgz", - "integrity": "sha512-7EpA9Tyq9It2z7GaLPHljEdmCtVFAkYko6vxXbN+H5PdL6zjEOw66bzMbKisKkh3px5dUd1OlRwPljjs34dpAQ==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.3", - "ethers": "^4.0.32", - "web3": "1.7.4" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", - "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-bzz": "1.7.4", - "web3-core": "1.7.4", - "web3-eth": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-shh": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-bzz": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", - "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", - "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-requestmanager": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-method": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", - "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", - "dev": true, - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-requestmanager": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", - "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", - "dev": true, - "dependencies": { - "util": "^0.12.0", - "web3-core-helpers": "1.7.4", - "web3-providers-http": "1.7.4", - "web3-providers-ipc": "1.7.4", - "web3-providers-ws": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-subscriptions": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", - "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", - "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", - "dev": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-accounts": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-eth-ens": "1.7.4", - "web3-eth-iban": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", - "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.2", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-contract": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", - "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-ens": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", - "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", - "dev": true, - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-personal": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", - "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", - "dev": true, - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-net": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", - "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", - "dev": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-providers-http": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", - "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", - "dev": true, - "dependencies": { - "web3-core-helpers": "1.7.4", - "xhr2-cookies": "1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-providers-ipc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", - "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", - "dev": true, - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-providers-ws": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", - "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-shh": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", - "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-net": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/profiler": { - "version": "0.1.37", - "resolved": "https://registry.npmjs.org/@truffle/profiler/-/profiler-0.1.37.tgz", - "integrity": "sha512-G5AdR4VXwwmwZGXQM3fPcV0CONAiTqH2RDGcICJG14veqxU5VtIJ7Sz3zbaLhSv9SVMYY7oQcGUJB9+6PQMakg==", - "dev": true, - "dependencies": { - "@truffle/contract-sources": "^0.2.0", - "@truffle/expect": "^0.1.4", - "debug": "^4.3.1" - } - }, - "node_modules/@truffle/provider": { - "version": "0.2.64", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.64.tgz", - "integrity": "sha512-ZwPsofw4EsCq/2h0t73SPnnFezu4YQWBmK4FxFaOUX0F+o8NsZuHKyfJzuZwyZbiktYmefM3yD9rM0Dj4BhNbw==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.1.1", - "@truffle/interface-adapter": "^0.5.25", - "debug": "^4.3.1", - "web3": "1.7.4" - } - }, - "node_modules/@truffle/provider/node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/@truffle/provider/node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/provider/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@truffle/provider/node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/provider/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@truffle/provider/node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/@truffle/provider/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/provider/node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@truffle/provider/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@truffle/provider/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "node_modules/@truffle/provider/node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@truffle/provider/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/provider/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "node_modules/@truffle/provider/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/@truffle/provider/node_modules/web3": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", - "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-bzz": "1.7.4", - "web3-core": "1.7.4", - "web3-eth": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-shh": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-bzz": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", - "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", - "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-requestmanager": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-method": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", - "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", - "dev": true, - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-requestmanager": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", - "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", - "dev": true, - "dependencies": { - "util": "^0.12.0", - "web3-core-helpers": "1.7.4", - "web3-providers-http": "1.7.4", - "web3-providers-ipc": "1.7.4", - "web3-providers-ws": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-subscriptions": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", - "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", - "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", - "dev": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-accounts": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-eth-ens": "1.7.4", - "web3-eth-iban": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-accounts": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", - "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.2", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-contract": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", - "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", - "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-ens": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", - "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", - "dev": true, - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-personal": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", - "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", - "dev": true, - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-net": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", - "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", - "dev": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-providers-http": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", - "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", - "dev": true, - "dependencies": { - "web3-core-helpers": "1.7.4", - "xhr2-cookies": "1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-providers-ipc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", - "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", - "dev": true, - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-providers-ws": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", - "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-shh": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", - "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-net": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provisioner": { - "version": "0.2.68", - "resolved": "https://registry.npmjs.org/@truffle/provisioner/-/provisioner-0.2.68.tgz", - "integrity": "sha512-o6SjYoOCZUF1cBGC4hg+qwmTaicO3G+O3hDRWDcifnaXXP1k+0oP1WnximmmXzxKIOSUYG+5+Ib8/4267LkdfQ==", - "dev": true, - "dependencies": { - "@truffle/config": "^1.3.45" - } - }, - "node_modules/@truffle/resolver": { - "version": "9.0.24", - "resolved": "https://registry.npmjs.org/@truffle/resolver/-/resolver-9.0.24.tgz", - "integrity": "sha512-sTRnPqcPqt4BizkRos8e+k+ZngvVeP8Gaaum7FTrkVROIEMeJq+Kz4BD7tV/q16yqZILskoFCslhKyQTCPlmXw==", - "dev": true, - "dependencies": { - "@truffle/compile-solidity": "^6.0.51", - "@truffle/contract": "^4.6.8", - "@truffle/contract-sources": "^0.2.0", - "@truffle/expect": "^0.1.4", - "@truffle/provisioner": "^0.2.68", - "abi-to-sol": "^0.6.6", - "debug": "^4.3.1", - "detect-installed": "^2.0.4", - "fs-extra": "^9.1.0", - "get-installed-path": "^4.0.8", - "glob": "^7.1.6", - "web3-utils": "1.7.4" - } - }, - "node_modules/@truffle/resolver/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/spinners": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@truffle/spinners/-/spinners-0.2.3.tgz", - "integrity": "sha512-YnaQ+oBRQ1I1+/P18i8oSW4orUYi6vwpZQxauEZ5X0L8atjKq+RWdiNaza6J6L+KOLunXM4+pWxnNzuUmxlJZw==", - "dev": true, - "dependencies": { - "@trufflesuite/spinnies": "^0.1.1" - } - }, - "node_modules/@truffle/workflow-compile": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@truffle/workflow-compile/-/workflow-compile-4.0.21.tgz", - "integrity": "sha512-3BNpfR8yzKfFkdupszaR39iGNSYhyIzZe6O+YyWDP4Aq16yrMy+fEZA9k9FA/KaS1toPoQi4npbCqqWhf1PELA==", - "dev": true, - "dependencies": { - "@truffle/artifactor": "^4.0.158", - "@truffle/compile-common": "^0.7.31", - "@truffle/compile-solidity": "^6.0.31", - "@truffle/compile-vyper": "^3.1.66", - "@truffle/config": "^1.3.29", - "@truffle/db-loader": "^0.1.20", - "@truffle/expect": "^0.1.1", - "@truffle/external-compile": "^2.0.47", - "@truffle/resolver": "^9.0.4", - "fs-extra": "^9.1.0" - } - }, - "node_modules/@trufflesuite/chromafi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz", - "integrity": "sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ==", - "dev": true, - "dependencies": { - "camelcase": "^4.1.0", - "chalk": "^2.3.2", - "cheerio": "^1.0.0-rc.2", - "detect-indent": "^5.0.0", - "highlight.js": "^10.4.1", - "lodash.merge": "^4.6.2", - "strip-ansi": "^4.0.0", - "strip-indent": "^2.0.0" - } - }, - "node_modules/@trufflesuite/spinnies": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@trufflesuite/spinnies/-/spinnies-0.1.1.tgz", - "integrity": "sha512-jltEtmFJj6xmQqr85gP8OqBHCEiId+zw+uAsb3DyLLRD17O6sySW6Afa2Z/jpzSafj+32ssDfLJ+c0of1NLqcA==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "cli-cursor": "^3.1.0", - "strip-ansi": "^6.0.0" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@trufflesuite/spinnies/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@trufflesuite/spinnies/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "optional": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/chai-like": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/chai-like/-/chai-like-1.1.1.tgz", - "integrity": "sha512-s46EZsupBuVhLn66DbRee5B0SELLmL4nFXVrBiV29BxLGm9Sh7Bful623j3AfiQRu2zAP4cnlZ3ETWB3eWc4bA==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/chai-things": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@types/chai-things/-/chai-things-0.0.35.tgz", - "integrity": "sha512-BC8FwMf9FHj87XT4dgTwbdb8dNRilGqYWGmwLPdJ54YNk6K2PlcFTt68NGHjgPDnms8zIYcOtmPePd0mPNTo/Q==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true, - "optional": true - }, - "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "optional": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true, - "optional": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "node_modules/@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz", - "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==" - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true, - "optional": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true, - "optional": true - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "optional": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz", - "integrity": "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz", - "integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/type-utils": "5.45.0", - "@typescript-eslint/utils": "5.45.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz", - "integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz", - "integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz", - "integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.45.0", - "@typescript-eslint/utils": "5.45.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz", - "integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz", - "integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz", - "integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz", - "integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.45.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/@uniswap/lib": { - "version": "4.0.1-alpha", - "resolved": "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz", - "integrity": "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@uniswap/v2-core": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz", - "integrity": "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@uniswap/v3-core": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.1.tgz", - "integrity": "sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@uniswap/v3-periphery": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.3.tgz", - "integrity": "sha512-80c+wtVzl5JJT8UQskxVYYG3oZb4pkhY0zDe0ab/RX4+8f9+W5d8wI4BT0wLB0wFQTSnbW+QdBSpkHA/vRyGBA==", - "dev": true, - "dependencies": { - "@openzeppelin/contracts": "3.4.2-solc-0.7", - "@uniswap/lib": "^4.0.1-alpha", - "@uniswap/v2-core": "1.0.1", - "@uniswap/v3-core": "1.0.0", - "base64-sol": "1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@uniswap/v3-periphery/node_modules/@openzeppelin/contracts": { - "version": "3.4.2-solc-0.7", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz", - "integrity": "sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==", - "dev": true - }, - "node_modules/@uniswap/v3-periphery/node_modules/@uniswap/v3-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.0.tgz", - "integrity": "sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "optional": true - }, - "node_modules/abi-to-sol": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/abi-to-sol/-/abi-to-sol-0.6.6.tgz", - "integrity": "sha512-PRn81rSpv6NXFPYQSw7ujruqIP6UkwZ/XoFldtiqCX8+2kHVc73xVaUVvdbro06vvBVZiwnxhEIGdI4BRMwGHw==", - "dev": true, - "dependencies": { - "@truffle/abi-utils": "^0.3.0", - "@truffle/contract-schema": "^3.3.1", - "ajv": "^6.12.5", - "better-ajv-errors": "^0.8.2", - "neodoc": "^2.0.2", - "semver": "^7.3.5", - "source-map-support": "^0.5.19" - }, - "bin": { - "abi-to-sol": "dist/bin/abi-to-sol.js" - }, - "optionalDependencies": { - "prettier": "^2.7.1", - "prettier-plugin-solidity": "^1.0.0-dev.23" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" - }, - "node_modules/abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "dev": true, - "optional": true, - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/antlr4ts": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", - "dev": true, - "optional": true - }, - "node_modules/any-signal": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", - "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", - "dependencies": { - "abort-controller": "^3.0.0", - "native-abort-controller": "^1.0.3" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "deprecated": "The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-reporting-protobuf": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.3.tgz", - "integrity": "sha512-L3+DdClhLMaRZWVmMbBcwl4Ic77CnEBPXLW53F7hkYhkaZD88ivbCVB1w/x5gunO6ZHrdzhjq0FHmTsBvPo7aQ==", - "deprecated": "The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "@apollo/protobufjs": "1.2.6" - } - }, - "node_modules/apollo-reporting-protobuf/node_modules/@apollo/protobufjs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz", - "integrity": "sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/apollo-reporting-protobuf/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true, - "optional": true - }, - "node_modules/apollo-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.11.1.tgz", - "integrity": "sha512-3RZ/veWGbi0zXy2YVaPkYIAavpbHyEVui91DNYvz6UFS0fZmhJwG7f1VmGheeRiqiV8nFa8GuBejI1niTeAYzA==", - "deprecated": "The `apollo-server` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "@types/express": "4.17.14", - "apollo-server-core": "^3.11.1", - "apollo-server-express": "^3.11.1", - "express": "^4.17.1" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-core": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.11.1.tgz", - "integrity": "sha512-t/eCKrRFK1lYZlc5pHD99iG7Np7CEm3SmbDiONA7fckR3EaB/pdsEdIkIwQ5QBBpT5JLp/nwvrZRVwhaWmaRvw==", - "deprecated": "The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.3.3", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.7.1", - "apollo-server-types": "^3.7.1", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "node-abort-controller": "^3.0.1", - "sha.js": "^2.4.11", - "uuid": "^9.0.0", - "whatwg-mimetype": "^3.0.0" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "deprecated": "The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", - "deprecated": "The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-express": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.11.1.tgz", - "integrity": "sha512-x9ngcpXbBlt4naCXTwNtBFb/mOd9OU0wtFXvJkObHF26NsRazu3DxDfEuekA6V1NFOocD+A9jmVMQeQWug5MgA==", - "deprecated": "The `apollo-server-express` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.14", - "@types/express-serve-static-core": "4.17.31", - "accepts": "^1.3.5", - "apollo-server-core": "^3.11.1", - "apollo-server-types": "^3.7.1", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "express": "^4.17.1", - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-plugin-base": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.1.tgz", - "integrity": "sha512-g3vJStmQtQvjGI289UkLMfThmOEOddpVgHLHT2bNj0sCD/bbisj4xKbBHETqaURokteqSWyyd4RDTUe0wAUDNQ==", - "deprecated": "The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "apollo-server-types": "^3.7.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-types": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.7.1.tgz", - "integrity": "sha512-aE9RDVplmkaOj/OduNmGa+0a1B5RIWI0o3zC1zLvBTVWMKTpo0ifVf11TyMkLCY+T7cnZqVqwyShziOyC3FyUw==", - "deprecated": "The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "dev": true, - "optional": true, - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.3", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/are-we-there-yet/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/argsarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/argsarray/-/argsarray-0.0.1.tgz", - "integrity": "sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg==", - "dev": true, - "optional": true - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dev": true, - "optional": true, - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dev": true, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/axios-retry": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.3.1.tgz", - "integrity": "sha512-RohAUQTDxBSWLFEnoIG/6bvmy8l3TfpkclgStjl5MDCMBDgapAWCmr1r/9harQfWC8bzLC8job6UcL1A1Yc+/Q==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.15.4", - "is-retry-allowed": "^2.2.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/base64-sol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/base64-sol/-/base64-sol-1.0.1.tgz", - "integrity": "sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==", - "dev": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true - }, - "node_modules/better-ajv-errors": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-0.8.2.tgz", - "integrity": "sha512-FnODTBJSQSHmJXDLPiC7ca0dC4S1HSTPv1+Hg2sm/C71i3Dj0l1jcUEaq/3OQ6MmnUveshTsUvUj65pDSr3Qow==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/runtime": "^7.0.0", - "chalk": "^2.4.1", - "core-js": "^3.2.1", - "json-to-ast": "^2.0.3", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "peerDependencies": { - "ajv": "4.11.8 - 8" - } - }, - "node_modules/big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", - "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" - } - }, - "node_modules/bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" - }, - "node_modules/blob-to-it": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz", - "integrity": "sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA==", - "dependencies": { - "browser-readablestream-to-it": "^1.0.3" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/borc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/borc/-/borc-3.0.0.tgz", - "integrity": "sha512-ec4JmVC46kE0+layfnwM3l15O70MlFiEbmQHY/vpqIKiUtPVntv4BY4NVnz3N4vb21edV3mY97XVckFvYHWF9g==", - "dependencies": { - "bignumber.js": "^9.0.0", - "buffer": "^6.0.3", - "commander": "^2.15.0", - "ieee754": "^1.1.13", - "iso-url": "^1.1.5", - "json-text-sequence": "~0.3.0", - "readable-stream": "^3.6.0" - }, - "bin": { - "cbor2comment": "bin/cbor2comment.js", - "cbor2diag": "bin/cbor2diag.js", - "cbor2json": "bin/cbor2json.js", - "json2cbor": "bin/json2cbor.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/browser-readablestream-to-it": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz", - "integrity": "sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==" - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/bufferutil/node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", - "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camel-case/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cbor": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", - "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", - "dev": true, - "dependencies": { - "bignumber.js": "^9.0.1", - "nofilter": "^1.0.4" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-like": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chai-like/-/chai-like-1.1.1.tgz", - "integrity": "sha512-VKa9z/SnhXhkT1zIjtPACFWSoWsqVoaz1Vg+ecrKo5DCKVlgL30F/pEyEvXPBOVwCgLZcWUleCM/C1okaKdTTA==", - "dev": true, - "peerDependencies": { - "chai": "2 - 4" - } - }, - "node_modules/chai-things": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chai-things/-/chai-things-0.2.0.tgz", - "integrity": "sha512-6ns0SU21xdRCoEXVKH3HGbwnsgfVMXQ+sU5V8PI9rfxaITos8lss1vUxbF1FAcJKjfqmmmLVlr/z3sLes00w+A==", - "dev": true - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/change-case/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/cids/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/cids/node_modules/multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } - }, - "node_modules/cids/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/code-error-fragment": { - "version": "0.0.230", - "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "dev": true, - "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conf/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/conf/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true, - "optional": true - }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "dependencies": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", - "dev": true - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", - "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-addr-codec": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz", - "integrity": "sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==", - "dev": true, - "dependencies": { - "base-x": "^3.0.8", - "big-integer": "1.6.36", - "blakejs": "^1.1.0", - "bs58": "^4.0.1", - "ripemd160-min": "0.0.6", - "safe-buffer": "^5.2.0", - "sha3": "^2.1.1" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", - "dev": true, - "optional": true - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dataloader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz", - "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", - "dev": true, - "optional": true - }, - "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", - "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", - "dev": true, - "optional": true, - "dependencies": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/deferred-leveldown/node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "optional": true - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/detect-installed": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-installed/-/detect-installed-2.0.4.tgz", - "integrity": "sha512-IpGo06Ff/rMGTKjFvVPbY9aE4mRT2XP3eYHC/ZS25LKDr2h8Gbv74Ez2q/qd7IYDqD9ZjI/VGedHNXsbKZ/Eig==", - "dev": true, - "dependencies": { - "get-installed-path": "^2.0.3" - }, - "engines": { - "node": ">=4", - "npm": ">=2" - } - }, - "node_modules/detect-installed/node_modules/get-installed-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", - "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", - "dev": true, - "dependencies": { - "global-modules": "1.0.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-over-http-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", - "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", - "dependencies": { - "debug": "^4.3.1", - "native-fetch": "^3.0.0", - "receptacle": "^1.3.2" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "dev": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ==", - "dev": true, - "optional": true - }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-fetch": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.9.1.tgz", - "integrity": "sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==", - "dependencies": { - "encoding": "^0.1.13" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/emittery": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz", - "integrity": "sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", - "dev": true, - "optional": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "dev": true, - "optional": true, - "dependencies": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/encoding-down/node_modules/abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "dev": true, - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/encoding-down/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/encoding-down/node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/encoding-down/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/end-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/end-stream/-/end-stream-0.1.0.tgz", - "integrity": "sha512-Brl10T8kYnc75IepKizW6Y9liyW8ikz1B7n/xoHrJxoVSSjoqPn30sb7XVFfQERK4QfUMYRGs9dhWwtt2eu6uA==", - "dev": true, - "optional": true, - "dependencies": { - "write-stream": "~0.4.3" - } - }, - "node_modules/entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", - "dependencies": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - } - }, - "node_modules/eth-ens-namehash/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" - }, - "node_modules/eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "dependencies": { - "js-sha3": "^0.8.0" - } - }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ethereum-cryptography/node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/ethereum-cryptography/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/ethereum-cryptography/node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "node_modules/ethers/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethers/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true - }, - "node_modules/ethers/node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-check": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz", - "integrity": "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==", - "dev": true, - "dependencies": { - "pure-rand": "^5.0.1" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fetch-cookie": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.11.0.tgz", - "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==", - "dev": true, - "optional": true, - "dependencies": { - "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", - "integrity": "sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==", - "dev": true, - "dependencies": { - "traverse-chain": "~0.1.0" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", - "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dependencies": { - "minipass": "^2.6.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true, - "optional": true - }, - "node_modules/ganache": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.5.0.tgz", - "integrity": "sha512-afNTJYBEaFrLPRrn7eUxH39TgnrffvHn/4T6THzQrc3rpfe4DOxw2nY2XEQxfsq1t4OqKSXtxomzyo26RZiOzw==", - "bundleDependencies": [ - "@trufflesuite/bigint-buffer", - "emittery", - "keccak", - "leveldown", - "secp256k1", - "@types/bn.js", - "@types/lru-cache", - "@types/seedrandom" - ], - "dev": true, - "hasShrinkwrap": true, - "dependencies": { - "@trufflesuite/bigint-buffer": "1.1.10", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "5.1.1", - "@types/seedrandom": "3.0.1", - "emittery": "0.10.0", - "keccak": "3.0.2", - "leveldown": "6.1.0", - "secp256k1": "4.0.3" - }, - "bin": { - "ganache": "dist/node/cli.js", - "ganache-cli": "dist/node/cli.js" - }, - "optionalDependencies": { - "bufferutil": "4.0.5", - "utf-8-validate": "5.0.7" - } - }, - "node_modules/ganache-time-traveler": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/ganache-time-traveler/-/ganache-time-traveler-1.0.16.tgz", - "integrity": "sha512-oUaQge9tiT/zzcGqehqJcoH10claKi9QFhq7zI1Wa3KtdPobjgLVMYvqXCJuHCAZoS7sHvLB/N/rSnhmivxaKw==", - "dev": true - }, - "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz", - "integrity": "sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "node-gyp-build": "4.4.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer/node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache/node_modules/@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache/node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/@types/node": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", - "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/@types/seedrandom": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz", - "integrity": "sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/ganache/node_modules/bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - } - }, - "node_modules/ganache/node_modules/catering": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", - "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "queue-tick": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache/node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/ganache/node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/ganache/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache/node_modules/keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache/node_modules/leveldown": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", - "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "abstract-leveldown": "^7.2.0", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "catering": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache/node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache/node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/queue-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", - "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ganache/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/ganache/node_modules/utf-8-validate": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", - "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - } - }, - "node_modules/ganache/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-installed-path": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-4.0.8.tgz", - "integrity": "sha512-PmANK1xElIHlHH2tXfOoTnSDUjX1X3GvKK6ZyLbUnSCCn1pADwu67eVWttuPzJWrXDDT2MfO6uAaKILOFfitmA==", - "dev": true, - "dependencies": { - "global-modules": "1.0.0" - }, - "engines": { - "node": ">=6", - "npm": ">=5", - "yarn": ">=1" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", - "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==" - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", - "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", - "dependencies": { - "@sindresorhus/is": "^4.6.0", - "@szmarczak/http-timer": "^5.0.1", - "@types/cacheable-request": "^6.0.2", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^6.0.4", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "form-data-encoder": "1.7.1", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true, - "optional": true - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/highlightjs-solidity": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz", - "integrity": "sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg==", - "dev": true - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "dependencies": { - "punycode": "2.1.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "optional": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true, - "optional": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/interface-datastore": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-4.0.2.tgz", - "integrity": "sha512-/XRmD7oagZMTaK25rV3WFrejLoUwxZcpgE+eNyZNYvb2jlB5P3MwJCIbetJSlVYK7yvaFmJi8s3f9VLcxJjdog==", - "dependencies": { - "err-code": "^3.0.1", - "interface-store": "^0.0.2", - "ipfs-utils": "^8.1.2", - "iso-random-stream": "^2.0.0", - "it-all": "^1.0.2", - "it-drain": "^1.0.1", - "it-filter": "^1.0.2", - "it-take": "^1.0.1", - "nanoid": "^3.0.2", - "uint8arrays": "^2.1.5" - } - }, - "node_modules/interface-ipld-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz", - "integrity": "sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "cids": "^1.1.6", - "multicodec": "^3.0.1", - "multihashes": "^4.0.2" - } - }, - "node_modules/interface-ipld-format/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/interface-ipld-format/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/interface-ipld-format/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/interface-ipld-format/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/interface-ipld-format/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/interface-ipld-format/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/interface-store": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-0.0.2.tgz", - "integrity": "sha512-t4c9GKXH1Vi/WxmppGyIi6iedbGo92YmLneopHmbIEIp27ep7VnrYGA6lM/rLsFo5Tj6TJgIqr3FOk8mvPgIWQ==" - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipfs-core-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.5.2.tgz", - "integrity": "sha512-DOQeL+GFGYMTlnbdtMeBzvfVnyAalSgCfPr8XUCI+FVBZZWwzkt5jZZzGDmF87HVRrMR3FuVyBKZj772mcXKyQ==", - "dependencies": { - "cids": "^1.1.6", - "interface-datastore": "^4.0.0", - "ipld-block": "^0.11.1", - "multiaddr": "^9.0.1", - "multibase": "^4.0.2" - } - }, - "node_modules/ipfs-core-types/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/ipfs-core-types/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-utils": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.8.3.tgz", - "integrity": "sha512-PY7PkCgCtVYtNOe1C3ew1+5D9NqXqizb886R/lyGWe+KsmWtBQkQIk0ZIDwKyHGvG2KA2QQeIDzdOmzBQBJtHQ==", - "dependencies": { - "any-signal": "^2.1.2", - "blob-to-it": "^1.0.1", - "browser-readablestream-to-it": "^1.0.1", - "cids": "^1.1.6", - "err-code": "^3.0.1", - "ipfs-core-types": "^0.5.2", - "ipfs-unixfs": "^4.0.3", - "ipfs-utils": "^8.1.2", - "it-all": "^1.0.4", - "it-map": "^1.0.4", - "it-peekable": "^1.0.1", - "multiaddr": "^9.0.1", - "multiaddr-to-uri": "^7.0.0", - "parse-duration": "^1.0.0", - "timeout-abort-controller": "^1.1.1", - "uint8arrays": "^2.1.3" - } - }, - "node_modules/ipfs-core-utils/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/cids/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-utils/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-utils/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-utils/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/ipfs-http-client": { - "version": "50.1.2", - "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-50.1.2.tgz", - "integrity": "sha512-ZbJlED4wqwFXQFVB9FQDs20ygdq7O/zSq4AvO9KRAmkqUj2TsCWCteUz2fBMnGWLh2tExxeSl/rQbHbJptb8JQ==", - "dependencies": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.2", - "cids": "^1.1.6", - "debug": "^4.1.1", - "form-data": "^4.0.0", - "ipfs-core-types": "^0.5.2", - "ipfs-core-utils": "^0.8.3", - "ipfs-unixfs": "^4.0.3", - "ipfs-utils": "^8.1.2", - "ipld-block": "^0.11.0", - "ipld-dag-cbor": "^1.0.0", - "ipld-dag-pb": "^0.22.1", - "ipld-raw": "^7.0.0", - "it-last": "^1.0.4", - "it-map": "^1.0.4", - "it-tar": "^3.0.0", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "multiaddr": "^9.0.1", - "multibase": "^4.0.2", - "multicodec": "^3.0.1", - "multihashes": "^4.0.2", - "nanoid": "^3.1.12", - "native-abort-controller": "^1.0.3", - "parse-duration": "^1.0.0", - "stream-to-it": "^0.2.2", - "uint8arrays": "^2.1.3" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/cids/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-http-client/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-http-client/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-http-client/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/ipfs-unixfs": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz", - "integrity": "sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw==", - "dependencies": { - "err-code": "^3.0.1", - "protobufjs": "^6.10.2" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/ipfs-utils": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-8.1.6.tgz", - "integrity": "sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==", - "dependencies": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^3.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.1.5", - "it-glob": "~0.0.11", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", - "native-fetch": "^3.0.0", - "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", - "stream-to-it": "^0.2.2" - } - }, - "node_modules/ipfs-utils/node_modules/node-fetch": { - "name": "@achingbrain/node-fetch", - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", - "license": "MIT", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/ipld-block": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/ipld-block/-/ipld-block-0.11.1.tgz", - "integrity": "sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw==", - "dependencies": { - "cids": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-block/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-block/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-block/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-block/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-block/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/ipld-block/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ipld-dag-cbor/-/ipld-dag-cbor-1.0.1.tgz", - "integrity": "sha512-PZh8rHnRETX5bj60i73W2oq6BXoZnIvYCBDwIffYVJgxMr7BEVd5PycAARBiT6daORJ/4zbqEFR5CcrjeCtm/A==", - "deprecated": "This module has been superseded by @ipld/dag-cbor and multiformats", - "dependencies": { - "borc": "^3.0.0", - "cids": "^1.0.0", - "interface-ipld-format": "^1.0.0", - "is-circular": "^1.0.2", - "multicodec": "^3.0.1", - "multihashing-async": "^2.0.0", - "uint8arrays": "^2.1.3" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/cids/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/ipld-dag-pb": { - "version": "0.22.3", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz", - "integrity": "sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg==", - "deprecated": "This module has been superseded by @ipld/dag-pb and multiformats", - "dependencies": { - "cids": "^1.0.0", - "interface-ipld-format": "^1.0.0", - "multicodec": "^3.0.1", - "multihashing-async": "^2.0.0", - "protobufjs": "^6.10.2", - "stable": "^0.1.8", - "uint8arrays": "^2.0.5" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/cids/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-pb/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-pb/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-pb/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/ipld-raw": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ipld-raw/-/ipld-raw-7.0.1.tgz", - "integrity": "sha512-oaiy0Ot23NCnoBA7sLvPL9qFRC6JDB0IsdZL6rUeZJxzxabQuBLNGYXcqjQ8jlF0UPLEUSO+h8OJh2DZPzL2aQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "cids": "^1.1.6", - "interface-ipld-format": "^1.0.0", - "multicodec": "^3.0.1", - "multihashing-async": "^2.1.2" - } - }, - "node_modules/ipld-raw/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/ipld-raw/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-circular": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-circular/-/is-circular-1.0.2.tgz", - "integrity": "sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA==" - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-electron": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz", - "integrity": "sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw==" - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.0" - } - }, - "node_modules/is-lower-case/node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-retry-allowed": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", - "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", - "dev": true, - "dependencies": { - "upper-case": "^1.1.0" - } - }, - "node_modules/is-upper-case/node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iso-constants": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/iso-constants/-/iso-constants-0.1.2.tgz", - "integrity": "sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ==", - "hasInstallScript": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/iso-random-stream": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/iso-random-stream/-/iso-random-stream-2.0.2.tgz", - "integrity": "sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==", - "dependencies": { - "events": "^3.3.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/iso-url": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", - "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==", - "engines": { - "node": ">=12" - } - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/it-all": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", - "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==" - }, - "node_modules/it-concat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/it-concat/-/it-concat-2.0.0.tgz", - "integrity": "sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw==", - "dependencies": { - "bl": "^5.0.0" - } - }, - "node_modules/it-drain": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", - "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==" - }, - "node_modules/it-filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", - "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==" - }, - "node_modules/it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "dependencies": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "node_modules/it-last": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.6.tgz", - "integrity": "sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==" - }, - "node_modules/it-map": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz", - "integrity": "sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==" - }, - "node_modules/it-peekable": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-1.0.3.tgz", - "integrity": "sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ==" - }, - "node_modules/it-reader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-3.0.0.tgz", - "integrity": "sha512-NxR40odATeaBmSefn6Xn43DplYvn2KtEKQzn4jrTRuPYXMky5M4e+KQ7aTJh0k0vkytLyeenGO1I1GXlGm4laQ==", - "dependencies": { - "bl": "^5.0.0" - } - }, - "node_modules/it-take": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", - "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==" - }, - "node_modules/it-tar": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/it-tar/-/it-tar-3.0.0.tgz", - "integrity": "sha512-VhD1Hnx4IXDcQgYJnJgltkn+w5F8kiJaB46lqovh+YWfty2JGW7i40QQjWbSvcg1QfaU8is8AVX8xwx/Db9oOg==", - "dependencies": { - "bl": "^5.0.0", - "buffer": "^6.0.3", - "iso-constants": "^0.1.2", - "it-concat": "^2.0.0", - "it-reader": "^3.0.0", - "p-defer": "^3.0.0" - } - }, - "node_modules/it-to-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz", - "integrity": "sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==", - "dependencies": { - "buffer": "^6.0.3", - "fast-fifo": "^1.0.0", - "get-iterator": "^1.0.2", - "p-defer": "^3.0.0", - "p-fifo": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "node_modules/iter-tools": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/iter-tools/-/iter-tools-7.5.0.tgz", - "integrity": "sha512-L0p/RG3Hwk1urilryDKqU8pQ1t5AaaMc7CHmiwJD/uh63Lv7VyjNng/esstf+Tct1587IpetpcDFdufz8sG+sQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.1" - } - }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true - }, - "node_modules/json-stable-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", - "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", - "dev": true, - "optional": true, - "dependencies": { - "jsonify": "^0.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/json-text-sequence": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.3.0.tgz", - "integrity": "sha512-7khKIYPKwXQem4lWXfpIN/FEnhztCeRPSxH4qm3fVlqulwujrRDD54xAwDDn/qVKpFtV550+QAkcWJcufzqQuA==", - "dependencies": { - "@sovpro/delimited-stream": "^1.1.0" - }, - "engines": { - "node": ">=10.18.0" - } - }, - "node_modules/json-to-ast": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", - "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "dev": true, - "dependencies": { - "code-error-fragment": "0.0.230", - "grapheme-splitter": "^1.0.4" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "dev": true, - "optional": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/keccak/node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/level": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/level/-/level-6.0.1.tgz", - "integrity": "sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw==", - "dev": true, - "optional": true, - "dependencies": { - "level-js": "^5.0.0", - "level-packager": "^5.1.0", - "leveldown": "^5.4.0" - }, - "engines": { - "node": ">=8.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" - } - }, - "node_modules/level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", - "dev": true, - "optional": true, - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-codec/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "dev": true, - "optional": true, - "dependencies": { - "catering": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "dev": true, - "optional": true, - "dependencies": { - "errno": "~0.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "dev": true, - "optional": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-js": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/level-js/-/level-js-5.0.2.tgz", - "integrity": "sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg==", - "dev": true, - "optional": true, - "dependencies": { - "abstract-leveldown": "~6.2.3", - "buffer": "^5.5.0", - "inherits": "^2.0.3", - "ltgt": "^2.1.2" - } - }, - "node_modules/level-js/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-js/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/level-js/node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-js/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "dev": true, - "optional": true, - "dependencies": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/level-write-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/level-write-stream/-/level-write-stream-1.0.0.tgz", - "integrity": "sha512-bBNKOEOMl8msO+uIM9YX/gUO6ckokZ/4pCwTm/lwvs46x6Xs8Zy0sn3Vh37eDqse4mhy4fOMIb/JsSM2nyQFtw==", - "dev": true, - "optional": true, - "dependencies": { - "end-stream": "~0.1.0" - } - }, - "node_modules/leveldown": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz", - "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "abstract-leveldown": "~6.2.1", - "napi-macros": "~2.0.0", - "node-gyp-build": "~4.1.0" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/leveldown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/leveldown/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/leveldown/node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leveldown/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "dev": true, - "optional": true, - "dependencies": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levelup/node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true, - "optional": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.2" - } - }, - "node_modules/lower-case-first/node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", - "dev": true, - "optional": true - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/marked": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.3.tgz", - "integrity": "sha512-slWRdJkbTZ+PjkyJnE30Uid64eHwbwa1Q25INCAYfZlK4o6ylagBy/Le9eWntqJFoFT93ikUKMv47GZ4gTwHkw==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memdown": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", - "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", - "dev": true, - "optional": true, - "dependencies": { - "abstract-leveldown": "~2.7.1", - "functional-red-black-tree": "^1.0.1", - "immediate": "^3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/memdown/node_modules/abstract-leveldown": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", - "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", - "dev": true, - "optional": true, - "dependencies": { - "xtend": "~4.0.0" - } - }, - "node_modules/memdown/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "dependencies": { - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", - "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", - "dependencies": { - "mkdirp": "*" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha-multi-reporters": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz", - "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "lodash": "^4.17.15" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "mocha": ">=3.1.2" - } - }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multiaddr": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-9.0.2.tgz", - "integrity": "sha512-YFaEb9t4yXSbaGksSEdg+Kn2U02s7w4wXUgyEMQmPxFJj7CfVHY10WOsScAX/rK6Soa15S1zXYadqH9TtlVreQ==", - "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr", - "dependencies": { - "cids": "^1.0.0", - "dns-over-http-resolver": "^1.0.0", - "err-code": "^3.0.1", - "is-ip": "^3.1.0", - "multibase": "^4.0.2", - "uint8arrays": "^2.1.3", - "varint": "^6.0.0" - } - }, - "node_modules/multiaddr-to-uri": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-7.0.0.tgz", - "integrity": "sha512-VbscDpLcbV0m25tJqfnZSfbjVUuNlPa4BbD5l/7me1t0lc3SWI0XAoO5E/PNJF0e1qUlbdq7yjVFEQjUT+9r0g==", - "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri", - "dependencies": { - "multiaddr": "^9.0.1" - } - }, - "node_modules/multiaddr/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/multiaddr/node_modules/cids/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/multiaddr/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multiaddr/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/multiaddr/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/multiaddr/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multiaddr/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/multiaddr/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/multibase/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "varint": "^5.0.0" - } - }, - "node_modules/multicodec/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/multiformats": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" - }, - "node_modules/multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "dependencies": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - } - }, - "node_modules/multihashes/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/multihashes/node_modules/multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/multihashing-async": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-2.1.4.tgz", - "integrity": "sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg==", - "dependencies": { - "blakejs": "^1.1.0", - "err-code": "^3.0.0", - "js-sha3": "^0.8.0", - "multihashes": "^4.0.1", - "murmurhash3js-revisited": "^3.0.0", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashing-async/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashing-async/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashing-async/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/multihashing-async/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/mylas": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz", - "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", - "dev": true, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/raouldeheer" - } - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "node_modules/nano-base32": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz", - "integrity": "sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw==", - "dev": true - }, - "node_modules/nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true, - "optional": true - }, - "node_modules/native-abort-controller": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz", - "integrity": "sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==", - "peerDependencies": { - "abort-controller": "*" - } - }, - "node_modules/native-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", - "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", - "peerDependencies": { - "node-fetch": "*" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/neodoc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/neodoc/-/neodoc-2.0.2.tgz", - "integrity": "sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - } - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", - "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", - "dev": true, - "optional": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/node-pre-gyp/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "optional": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/node-pre-gyp/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/node-pre-gyp/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nofilter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", - "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/noop-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/noop-fn/-/noop-fn-1.0.0.tgz", - "integrity": "sha512-pQ8vODlgXt2e7A3mIbFDlizkr46r75V+BJxVAyat8Jl7YmI513gG5cfyRL0FedKraoZ+VAouI1h4/IWpus5pcQ==", - "dev": true, - "optional": true - }, - "node_modules/nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "optional": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "optional": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true, - "optional": true - }, - "node_modules/npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dev": true, - "optional": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", - "dependencies": { - "http-https": "^1.0.0" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/original-require": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", - "integrity": "sha512-5vdKMbE58WaE61uVD+PKyh8xdM398UnjPBLotW2sjG5MzHARwta/+NtMBCBA0t2WQblGYBvq5vsiZpWokwno+A==", - "dev": true - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/p-defer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", - "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", - "dependencies": { - "fast-fifo": "^1.0.0", - "p-defer": "^3.0.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-duration": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.2.tgz", - "integrity": "sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==" - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dev": true, - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", - "dev": true, - "dependencies": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" - } - }, - "node_modules/pascal-case/node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/pascal-case/node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/pascal-case/node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/pascal-case/node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/pascal-case/node_modules/upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", - "dev": true, - "dependencies": { - "upper-case": "^1.1.1" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/plimit-lit": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.5.0.tgz", - "integrity": "sha512-Eb/MqCb1Iv/ok4m1FqIXqvUKPISufcjZ605hl3KM/n8GaX8zfhtgdLwZU3vKjuHGh2O9Rjog/bHTq8ofIShdng==", - "dev": true, - "dependencies": { - "queue-lit": "^1.5.0" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pouchdb": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb/-/pouchdb-7.3.0.tgz", - "integrity": "sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw==", - "dev": true, - "optional": true, - "dependencies": { - "abort-controller": "3.0.0", - "argsarray": "0.0.1", - "buffer-from": "1.1.2", - "clone-buffer": "1.0.0", - "double-ended-queue": "2.1.0-0", - "fetch-cookie": "0.11.0", - "immediate": "3.3.0", - "inherits": "2.0.4", - "level": "6.0.1", - "level-codec": "9.0.2", - "level-write-stream": "1.0.0", - "leveldown": "5.6.0", - "levelup": "4.4.0", - "ltgt": "2.2.1", - "node-fetch": "2.6.7", - "readable-stream": "1.1.14", - "spark-md5": "3.0.2", - "through2": "3.0.2", - "uuid": "8.3.2", - "vuvuzela": "1.0.3" - } - }, - "node_modules/pouchdb-abstract-mapreduce": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz", - "integrity": "sha512-0zKXVFBvrfc1KnN0ggrB762JDmZnUpePHywo9Bq3Jy+L1FnoG7fXM5luFfvv5/T0gEw+ZTIwoocZECMnESBI9w==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.3.1", - "pouchdb-collate": "7.3.1", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-fetch": "7.3.1", - "pouchdb-mapreduce-utils": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "node_modules/pouchdb-adapter-leveldb-core": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.3.1.tgz", - "integrity": "sha512-mxShHlqLMPz2gChrgtA9okV1ogFmQrRAoM/O4EN0CrQWPLXqYtpL1f7sI2asIvFe7SmpnvbLx7kkZyFmLTfwjA==", - "dev": true, - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "buffer-from": "1.1.2", - "double-ended-queue": "2.1.0-0", - "levelup": "4.4.0", - "pouchdb-adapter-utils": "7.3.1", - "pouchdb-binary-utils": "7.3.1", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-json": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-merge": "7.3.1", - "pouchdb-utils": "7.3.1", - "sublevel-pouchdb": "7.3.1", - "through2": "3.0.2" - } - }, - "node_modules/pouchdb-adapter-memory": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.3.1.tgz", - "integrity": "sha512-iHdWGJAHONqQv0we3Oi1MYen69ZS8McLW9wUyaAYcWTJnAIIAr2ZM0/TeTDVSHfMUwYqEYk7X8jRtJZEMwLnwg==", - "dev": true, - "optional": true, - "dependencies": { - "memdown": "1.4.1", - "pouchdb-adapter-leveldb-core": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "node_modules/pouchdb-adapter-node-websql": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-node-websql/-/pouchdb-adapter-node-websql-7.0.0.tgz", - "integrity": "sha512-fNaOMO8bvMrRTSfmH4RSLSpgnKahRcCA7Z0jg732PwRbGvvMdGbreZwvKPPD1fg2tm2ZwwiXWK2G3+oXyoqZYw==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-adapter-websql-core": "7.0.0", - "pouchdb-utils": "7.0.0", - "websql": "1.0.0" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-binary-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.0.0.tgz", - "integrity": "sha512-yUktdOPIPvOVouCjJN3uop+bCcpdPwePrLm9eUAZNgEYnUFu0njdx7Q0WRsZ7UJ6l75HinL5ZHk4bnvEt86FLw==", - "dev": true, - "optional": true, - "dependencies": { - "buffer-from": "1.1.0" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-collections": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.0.0.tgz", - "integrity": "sha512-DaoUr/vU24Q3gM6ghj0va9j/oBanPwkbhkvnqSyC3Dm5dgf5pculNxueLF9PKMo3ycApoWzHMh6N2N8KJbDU2Q==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-errors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.0.0.tgz", - "integrity": "sha512-dTusY8nnTw4HIztCrNl7AoGgwvS1bVf/3/97hDaGc4ytn72V9/4dK8kTqlimi3UpaurohYRnqac0SGXYP8vgXA==", - "dev": true, - "optional": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-md5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.0.0.tgz", - "integrity": "sha512-yaSJKhLA3QlgloKUQeb2hLdT3KmUmPfoYdryfwHZuPTpXIRKTnMQTR9qCIRUszc0ruBpDe53DRslCgNUhAyTNQ==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.0.0", - "spark-md5": "3.0.0" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.0.0.tgz", - "integrity": "sha512-1bnoX1KdZYHv9wicDIFdO0PLiVIMzNDUBUZ/yOJZ+6LW6niQCB8aCv09ZztmKfSQcU5nnN3fe656tScBgP6dOQ==", - "dev": true, - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.0.6", - "inherits": "2.0.3", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "uuid": "3.2.1" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/spark-md5": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.0.tgz", - "integrity": "sha512-BpPFB0Oh83mi+6DRcFwxPx96f3OL8Tkq3hdvaHuXaQUsy5F3saI3zIPNQ/UsTQgyAXIHnML1waeCe1WoCPXbpQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/pouchdb-adapter-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.3.1.tgz", - "integrity": "sha512-uKLG6dClwTs/sLIJ4WkLAi9wlnDBpOnfyhpeAgOjlOGN/XLz5nKHrA4UJRnURDyc+uv79S9r/Unc4hVpmbSPUw==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.3.1", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-merge": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "node_modules/pouchdb-adapter-websql-core": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-websql-core/-/pouchdb-adapter-websql-core-7.0.0.tgz", - "integrity": "sha512-NyMaH0bl20SdJdOCzd+fwXo8JZ15a48/MAwMcIbXzsRHE4DjFNlRcWAcjUP6uN4Ezc+Gx+r2tkBBMf71mIz1Aw==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-adapter-utils": "7.0.0", - "pouchdb-binary-utils": "7.0.0", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-json": "7.0.0", - "pouchdb-merge": "7.0.0", - "pouchdb-utils": "7.0.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-adapter-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.0.0.tgz", - "integrity": "sha512-UWKPC6jkz6mHUzZefrU7P5X8ZGvBC8LSNZ7BIp0hWvJE6c20cnpDwedTVDpZORcCbVJpDmFOHBYnOqEIblPtbA==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.0.0", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "pouchdb-merge": "7.0.0", - "pouchdb-utils": "7.0.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-binary-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.0.0.tgz", - "integrity": "sha512-yUktdOPIPvOVouCjJN3uop+bCcpdPwePrLm9eUAZNgEYnUFu0njdx7Q0WRsZ7UJ6l75HinL5ZHk4bnvEt86FLw==", - "dev": true, - "optional": true, - "dependencies": { - "buffer-from": "1.1.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-collections": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.0.0.tgz", - "integrity": "sha512-DaoUr/vU24Q3gM6ghj0va9j/oBanPwkbhkvnqSyC3Dm5dgf5pculNxueLF9PKMo3ycApoWzHMh6N2N8KJbDU2Q==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-errors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.0.0.tgz", - "integrity": "sha512-dTusY8nnTw4HIztCrNl7AoGgwvS1bVf/3/97hDaGc4ytn72V9/4dK8kTqlimi3UpaurohYRnqac0SGXYP8vgXA==", - "dev": true, - "optional": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-json": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-7.0.0.tgz", - "integrity": "sha512-w0bNRu/7VmmCrFWMYAm62n30wvJJUT2SokyzeTyj3hRohj4GFwTRg1mSZ+iAmxgRKOFE8nzZstLG/WAB4Ymjew==", - "dev": true, - "optional": true, - "dependencies": { - "vuvuzela": "1.0.3" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-md5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.0.0.tgz", - "integrity": "sha512-yaSJKhLA3QlgloKUQeb2hLdT3KmUmPfoYdryfwHZuPTpXIRKTnMQTR9qCIRUszc0ruBpDe53DRslCgNUhAyTNQ==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.0.0", - "spark-md5": "3.0.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-merge": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.0.0.tgz", - "integrity": "sha512-tci5u6NpznQhGcPv4ho1h0miky9rs+ds/T9zQ9meQeDZbUojXNaX1Jxsb0uYEQQ+HMqdcQs3Akdl0/u0mgwPGg==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.0.0.tgz", - "integrity": "sha512-1bnoX1KdZYHv9wicDIFdO0PLiVIMzNDUBUZ/yOJZ+6LW6niQCB8aCv09ZztmKfSQcU5nnN3fe656tScBgP6dOQ==", - "dev": true, - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.0.6", - "inherits": "2.0.3", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "uuid": "3.2.1" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/spark-md5": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.0.tgz", - "integrity": "sha512-BpPFB0Oh83mi+6DRcFwxPx96f3OL8Tkq3hdvaHuXaQUsy5F3saI3zIPNQ/UsTQgyAXIHnML1waeCe1WoCPXbpQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/pouchdb-binary-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz", - "integrity": "sha512-crZJNfAEOnUoRk977Qtmk4cxEv6sNKllQ6vDDKgQrQLFjMUXma35EHzNyIJr1s76J77Q4sqKQAmxz9Y40yHGtw==", - "dev": true, - "optional": true, - "dependencies": { - "buffer-from": "1.1.2" - } - }, - "node_modules/pouchdb-collate": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.1.tgz", - "integrity": "sha512-o4gyGqDMLMSNzf6EDTr3eHaH/JRMoqRhdc+eV+oA8u00nTBtr9wD+jypVe2LbgKLJ4NWqx2qVkXiTiQdUFtsLQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-collections": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.1.tgz", - "integrity": "sha512-yUyDqR+OJmtwgExOSJegpBJXDLAEC84TWnbAYycyh+DZoA51Yw0+XVQF5Vh8Ii90/Ut2xo88fmrmp0t6kqom8w==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-debug": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/pouchdb-debug/-/pouchdb-debug-7.2.1.tgz", - "integrity": "sha512-eP3ht/AKavLF2RjTzBM6S9gaI2/apcW6xvaKRQhEdOfiANqerFuksFqHCal3aikVQuDO+cB/cw+a4RyJn/glBw==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "3.1.0" - } - }, - "node_modules/pouchdb-debug/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/pouchdb-debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-errors": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.1.tgz", - "integrity": "sha512-Zktz4gnXEUcZcty8FmyvtYUYsHskoST05m6H5/E2gg/0mCfEXq/XeyyLkZHaZmqD0ZPS9yNmASB1VaFWEKEaDw==", - "dev": true, - "optional": true, - "dependencies": { - "inherits": "2.0.4" - } - }, - "node_modules/pouchdb-fetch": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.1.tgz", - "integrity": "sha512-205xAtvdHRPQ4fp1h9+RmT9oQabo9gafuPmWsS9aEl3ER54WbY8Vaj1JHZGbU4KtMTYvW7H5088zLS7Nrusuag==", - "dev": true, - "optional": true, - "dependencies": { - "abort-controller": "3.0.0", - "fetch-cookie": "0.11.0", - "node-fetch": "2.6.7" - } - }, - "node_modules/pouchdb-find": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-7.3.1.tgz", - "integrity": "sha512-AeqUfAVY1c7IFaY36BRT0vIz9r4VTKq/YOWTmiqndOZUQ/pDGxyO2fNFal6NN3PyYww0JijlD377cPvhnrhJVA==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-abstract-mapreduce": "7.3.1", - "pouchdb-collate": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-fetch": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-selector-core": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "node_modules/pouchdb-json": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-7.3.1.tgz", - "integrity": "sha512-AyOKsmc85/GtHjMZyEacqzja8qLVfycS1hh1oskR+Bm5PIITX52Fb8zyi0hEetV6VC0yuGbn0RqiLjJxQePeqQ==", - "dev": true, - "optional": true, - "dependencies": { - "vuvuzela": "1.0.3" - } - }, - "node_modules/pouchdb-mapreduce-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.1.tgz", - "integrity": "sha512-oUMcq82+4pTGQ6dtrhgORHOVHZSr6w/5tFIUGlv7RABIDvJarL4snMawADjlpiEwPdiQ/ESG8Fqt8cxqvqsIgg==", - "dev": true, - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "inherits": "2.0.4", - "pouchdb-collections": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "node_modules/pouchdb-md5": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.1.tgz", - "integrity": "sha512-aDV8ui/mprnL3xmt0gT/81DFtTtJiKyn+OxIAbwKPMfz/rDFdPYvF0BmDC9QxMMzGfkV+JJUjU6at0PPs2mRLg==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.3.1", - "spark-md5": "3.0.2" - } - }, - "node_modules/pouchdb-merge": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.3.1.tgz", - "integrity": "sha512-FeK3r35mKimokf2PQ2tUI523QWyZ4lYZ0Yd75FfSch/SPY6wIokz5XBZZ6PHdu5aOJsEKzoLUxr8CpSg9DhcAw==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb-selector-core": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.1.tgz", - "integrity": "sha512-HBX+nNGXcaL9z0uNpwSMRq2GNZd3EZXW+fe9rJHS0hvJohjZL7aRJLoaXfEdHPRTNW+CpjM3Rny60eGekQdI/w==", - "dev": true, - "optional": true, - "dependencies": { - "pouchdb-collate": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "node_modules/pouchdb-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.1.tgz", - "integrity": "sha512-R3hHBo1zTdTu/NFs3iqkcaQAPwhIH0gMIdfVKd5lbDYlmP26rCG5pdS+v7NuoSSFLJ4xxnaGV+Gjf4duYsJ8wQ==", - "dev": true, - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.3.0", - "inherits": "2.0.4", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-md5": "7.3.1", - "uuid": "8.3.2" - } - }, - "node_modules/pouchdb-utils/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/pouchdb/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/pouchdb/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "optional": true - }, - "node_modules/pouchdb/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", - "dev": true, - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-solidity": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0.tgz", - "integrity": "sha512-gRJCeZ7imbWtNYN2SudjJoPmka5r6jcd2cSTV6FC3pVCtY6LFZbeQQjpKufUEp88hXBAAnkOTOh7TA5xwj9M3A==", - "dev": true, - "optional": true, - "dependencies": { - "@solidity-parser/parser": "^0.14.5", - "emoji-regex": "^10.2.1", - "escape-string-regexp": "^4.0.0", - "semver": "^7.3.8", - "solidity-comments-extractor": "^0.0.7", - "string-width": "^4.2.3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "prettier": "^2.3.0" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true - }, - "node_modules/protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz", - "integrity": "sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "optional": true - }, - "node_modules/queue-lit": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.0.tgz", - "integrity": "sha512-IslToJ4eiCEE9xwMzq3viOO5nH8sUWUCwoElrhNMozzr9IIt2qqvB4I+uHu/zJTQVqc9R5DFwok4ijNK1pU3fA==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-native-fetch-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz", - "integrity": "sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==", - "dependencies": { - "p-defer": "^3.0.0" - } - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "optional": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/responselike/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retimer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-2.0.0.tgz", - "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==" - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/ripemd160-min": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", - "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/secp256k1/node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "dependencies": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/sha3": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", - "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", - "dev": true, - "dependencies": { - "buffer": "6.0.3" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shiki": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", - "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", - "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", - "dependencies": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-get/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.17.tgz", - "integrity": "sha512-Dtidk2XtTTmkB3IKdyeg6wLYopJnBVxdoykN8oP8VY3PQjN16BScYoUJTXFm2OP7P0hXNAqWiJNmmfuELtLf8g==", - "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solc.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/solc/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/solidity-comments-extractor": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", - "integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==", - "dev": true, - "optional": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/spark-md5": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", - "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==", - "dev": true, - "optional": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sqlite3": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz", - "integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.11.0" - } - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-to-it": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", - "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", - "dependencies": { - "get-iterator": "^1.0.2" - } - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sublevel-pouchdb": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sublevel-pouchdb/-/sublevel-pouchdb-7.3.1.tgz", - "integrity": "sha512-n+4fK72F/ORdqPwoGgMGYeOrW2HaPpW9o9k80bT1B3Cim5BSvkKkr9WbWOWynni/GHkbCEdvLVFJL1ktosAdhQ==", - "dev": true, - "optional": true, - "dependencies": { - "inherits": "2.0.4", - "level-codec": "9.0.2", - "ltgt": "2.2.1", - "readable-stream": "1.1.14" - } - }, - "node_modules/sublevel-pouchdb/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "optional": true - }, - "node_modules/sublevel-pouchdb/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/sublevel-pouchdb/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "optional": true - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } - }, - "node_modules/swap-case/node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/swap-case/node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/swarm-js": { - "version": "0.1.42", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", - "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", - "dependencies": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^11.8.5", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - } - }, - "node_modules/swarm-js/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/swarm-js/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/swarm-js/node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/swarm-js/node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/swarm-js/node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/swarm-js/node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/swarm-js/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/swarm-js/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/swarm-js/node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/swarm-js/node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/swarm-js/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/testrpc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", - "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", - "deprecated": "testrpc has been renamed to ganache-cli, please use this package from now on.", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "optional": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timeout-abort-controller": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz", - "integrity": "sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==", - "dependencies": { - "abort-controller": "^3.0.0", - "retimer": "^2.0.0" - } - }, - "node_modules/tiny-queue": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-queue/-/tiny-queue-0.2.1.tgz", - "integrity": "sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A==", - "dev": true, - "optional": true - }, - "node_modules/title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", - "dev": true, - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - } - }, - "node_modules/title-case/node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "node_modules/title-case/node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/title-case/node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "optional": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/traverse-chain": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", - "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==", - "dev": true - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tsc-alias": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.0.tgz", - "integrity": "sha512-+8PJYBw63bkOwKwqjBRmM/jRdePg6ucLB+Rrr+MZAiTfwvk8Itg8FIn9CWE3voJUOvpFnwDjidHyaRRUyzORYA==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.3", - "commander": "^9.0.0", - "globby": "^11.0.4", - "mylas": "^2.1.9", - "normalize-path": "^3.0.0", - "plimit-lit": "^1.2.6" - }, - "bin": { - "tsc-alias": "dist/bin/index.js" - } - }, - "node_modules/tsc-alias/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tscpaths": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/tscpaths/-/tscpaths-0.0.9.tgz", - "integrity": "sha512-tz4qimSJTCjYtHVsoY7pvxLcxhmhgmwzm7fyMEiL3/kPFFVyUuZOwuwcWwjkAsIrSUKJK22A7fNuJUwxzQ+H+w==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "globby": "^9.2.0" - }, - "bin": { - "tscpaths": "cjs/index.js" - } - }, - "node_modules/tscpaths/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tscpaths/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tscpaths/node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/tscpaths/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/tscpaths/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tscpaths/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/tscpaths/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/tscpaths/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tscpaths/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tscpaths/node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tscpaths/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tscpaths/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tscpaths/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typedoc": { - "version": "0.22.18", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.18.tgz", - "integrity": "sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==", - "dev": true, - "dependencies": { - "glob": "^8.0.3", - "lunr": "^2.3.9", - "marked": "^4.0.16", - "minimatch": "^5.1.0", - "shiki": "^0.10.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 12.10.0" - }, - "peerDependencies": { - "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x || 4.6.x || 4.7.x" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", - "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/typescript": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", - "integrity": "sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uint8arrays": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", - "integrity": "sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "optional": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/utf-8-validate/node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, - "node_modules/vuvuzela": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz", - "integrity": "sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ==", - "dev": true, - "optional": true - }, - "node_modules/web3": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz", - "integrity": "sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw==", - "hasInstallScript": true, - "dependencies": { - "web3-bzz": "1.8.2", - "web3-core": "1.8.2", - "web3-eth": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-shh": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-bzz": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz", - "integrity": "sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w==", - "hasInstallScript": true, - "dependencies": { - "@types/node": "^12.12.6", - "got": "12.1.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-bzz/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "node_modules/web3-core": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz", - "integrity": "sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ==", - "dependencies": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-requestmanager": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-helpers": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz", - "integrity": "sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg==", - "dev": true, - "dependencies": { - "web3-eth-iban": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-helpers/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz", - "integrity": "sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA==", - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method/node_modules/web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-promievent": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz", - "integrity": "sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz", - "integrity": "sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g==", - "dependencies": { - "util": "^0.12.5", - "web3-core-helpers": "1.8.2", - "web3-providers-http": "1.8.2", - "web3-providers-ipc": "1.8.2", - "web3-providers-ws": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz", - "integrity": "sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw==", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "node_modules/web3-core/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz", - "integrity": "sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ==", - "dependencies": { - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-accounts": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-eth-ens": "1.8.2", - "web3-eth-iban": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-abi": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz", - "integrity": "sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-abi/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz", - "integrity": "sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA==", - "dependencies": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.1.5", - "scrypt-js": "^3.0.1", - "uuid": "^9.0.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/web3-eth-accounts/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/web3-eth-accounts/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/web3-eth-accounts/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/web3-eth-iban/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/web3-eth-contract": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz", - "integrity": "sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA==", - "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz", - "integrity": "sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw==", - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-iban": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz", - "integrity": "sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-iban/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz", - "integrity": "sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw==", - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "node_modules/web3-eth-personal/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth/node_modules/web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-net": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz", - "integrity": "sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag==", - "dependencies": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-http": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz", - "integrity": "sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ==", - "dependencies": { - "abortcontroller-polyfill": "^1.7.3", - "cross-fetch": "^3.1.4", - "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-http/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-http/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz", - "integrity": "sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w==", - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ws": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz", - "integrity": "sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA==", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ws/node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ws/node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-shh": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz", - "integrity": "sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw==", - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-net": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/websql": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/websql/-/websql-1.0.0.tgz", - "integrity": "sha512-7iZ+u28Ljw5hCnMiq0BCOeSYf0vCFQe/ORY0HgscTiKjQed8WqugpBUggJ2NTnB9fahn1kEnPRX2jf8Px5PhJw==", - "dev": true, - "optional": true, - "dependencies": { - "argsarray": "^0.0.1", - "immediate": "^3.2.2", - "noop-fn": "^1.0.0", - "sqlite3": "^4.0.0", - "tiny-queue": "^0.2.1" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", - "dev": true, - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-stream": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/write-stream/-/write-stream-0.4.3.tgz", - "integrity": "sha512-IJrvkhbAnj89W/GAVdVgbnPiVw5Ntg/B4tc/MUCIEwj/g6JIww1DWJyB/yBMT3yw2/TkT6IUZ0+IYef3flEw8A==", - "dev": true, - "optional": true, - "dependencies": { - "readable-stream": "~0.0.2" - } - }, - "node_modules/write-stream/node_modules/readable-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-0.0.4.tgz", - "integrity": "sha512-azrivNydKRYt7zwLV5wWUK7YzKTWs3q87xSmY6DlHapPrCvaT6ZrukvM5erV+yCSSPmZT8zkSdttOHQpWWm9zw==", - "dev": true, - "optional": true - }, - "node_modules/ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "node_modules/ws/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "dependencies": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "node_modules/xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "dependencies": { - "xhr-request": "^1.1.0" - } - }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "dev": true, - "dependencies": { - "cookiejar": "^2.1.1" - } - }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xss": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", - "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", - "dev": true, - "optional": true, - "dependencies": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - }, - "bin": { - "xss": "bin/xss" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@apollo/protobufjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", - "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==", - "dev": true, - "optional": true, - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "long": "^4.0.0" - } - }, - "@apollo/usage-reporting-protobuf": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.0.2.tgz", - "integrity": "sha512-GfE8aDqi/lAFut95pjH9IRvH0zGsQ5G/2lYL0ZLZfML7ArX+A4UVHFANQcPCcUYGE6bI6OPhLekg4Vsjf6B1cw==", - "dev": true, - "optional": true, - "requires": { - "@apollo/protobufjs": "1.2.7" - } - }, - "@apollo/utils.dropunuseddefinitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", - "dev": true, - "optional": true, - "requires": {} - }, - "@apollo/utils.keyvaluecache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", - "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", - "dev": true, - "optional": true, - "requires": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "7.10.1 - 7.13.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", - "dev": true, - "optional": true - } - } - }, - "@apollo/utils.logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz", - "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==", - "dev": true, - "optional": true - }, - "@apollo/utils.printwithreducedwhitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", - "dev": true, - "optional": true, - "requires": {} - }, - "@apollo/utils.removealiases": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", - "dev": true, - "optional": true, - "requires": {} - }, - "@apollo/utils.sortast": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", - "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", - "dev": true, - "optional": true, - "requires": { - "lodash.sortby": "^4.7.0" - } - }, - "@apollo/utils.stripsensitiveliterals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", - "dev": true, - "optional": true, - "requires": {} - }, - "@apollo/utils.usagereporting": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz", - "integrity": "sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==", - "dev": true, - "optional": true, - "requires": { - "@apollo/usage-reporting-protobuf": "^4.0.0", - "@apollo/utils.dropunuseddefinitions": "^1.1.0", - "@apollo/utils.printwithreducedwhitespace": "^1.1.0", - "@apollo/utils.removealiases": "1.0.0", - "@apollo/utils.sortast": "^1.1.0", - "@apollo/utils.stripsensitiveliterals": "^1.2.0" - } - }, - "@apollographql/apollo-tools": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", - "dev": true, - "optional": true, - "requires": {} - }, - "@apollographql/graphql-playground-html": { - "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", - "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", - "dev": true, - "optional": true, - "requires": { - "xss": "^1.0.8" - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/runtime": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", - "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@ensdomains/address-encoder": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", - "integrity": "sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==", - "dev": true, - "requires": { - "bech32": "^1.1.3", - "blakejs": "^1.1.0", - "bn.js": "^4.11.8", - "bs58": "^4.0.1", - "crypto-addr-codec": "^0.1.7", - "nano-base32": "^1.0.1", - "ripemd160": "^2.0.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "@ensdomains/ens": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", - "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", - "dev": true, - "requires": { - "bluebird": "^3.5.2", - "eth-ens-namehash": "^2.0.8", - "solc": "^0.4.20", - "testrpc": "0.0.1", - "web3-utils": "^1.0.0-beta.31" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "solc": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", - "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", - "dev": true, - "requires": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", - "dev": true, - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - } - } - } - }, - "@ensdomains/ensjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz", - "integrity": "sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@ensdomains/address-encoder": "^0.1.7", - "@ensdomains/ens": "0.4.5", - "@ensdomains/resolver": "0.2.4", - "content-hash": "^2.5.2", - "eth-ens-namehash": "^2.0.8", - "ethers": "^5.0.13", - "js-sha3": "^0.8.0" - }, - "dependencies": { - "ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "requires": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - } - } - }, - "@ensdomains/resolver": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", - "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", - "requires": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" - } - }, - "@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", - "requires": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" - } - }, - "@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "requires": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "requires": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - }, - "dependencies": { - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - } - } - }, - "@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" - }, - "@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "requires": { - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - }, - "dependencies": { - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "requires": {} - } - } - }, - "@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - }, - "dependencies": { - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - } - } - }, - "@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - }, - "dependencies": { - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - } - } - }, - "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "requires": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@graphql-tools/batch-execute": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz", - "integrity": "sha512-hRVDduX0UDEneVyEWtc2nu5H2PxpfSfM/riUlgZvo/a/nG475uyehxR5cFGvTEPEQUKY3vGIlqvtRigzqTfCew==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/utils": "8.9.0", - "dataloader": "2.1.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - } - }, - "@graphql-tools/delegate": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.8.1.tgz", - "integrity": "sha512-NDcg3GEQmdEHlnF7QS8b4lM1PSF+DKeFcIlLEfZFBvVq84791UtJcDj8734sIHLukmyuAxXMfA1qLd2l4lZqzA==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/batch-execute": "8.5.1", - "@graphql-tools/schema": "8.5.1", - "@graphql-tools/utils": "8.9.0", - "dataloader": "2.1.0", - "tslib": "~2.4.0", - "value-or-promise": "1.0.11" - } - }, - "@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/mock": { - "version": "8.7.12", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.12.tgz", - "integrity": "sha512-bEjj52T5idjzqFXfDZPFfPZDPFEjVmayYA6RYqMxM3Qdv5JJ8pSMEGDBcXhinbQudPKdRkLmR17usNmRMpUQEg==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/schema": "9.0.10", - "@graphql-tools/utils": "9.1.1", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "^2.4.0" - }, - "dependencies": { - "@graphql-tools/merge": { - "version": "8.3.12", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.12.tgz", - "integrity": "sha512-BFL8r4+FrqecPnIW0H8UJCBRQ4Y8Ep60aujw9c/sQuFmQTiqgWgpphswMGfaosP2zUinDE3ojU5wwcS2IJnumA==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/utils": "9.1.1", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/schema": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.10.tgz", - "integrity": "sha512-lV0o4df9SpPiaeeDAzgdCJ2o2N9Wvsp0SMHlF2qDbh9aFCFQRsXuksgiDm2yTgT3TG5OtUes/t0D6uPjPZFUbQ==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/merge": "8.3.12", - "@graphql-tools/utils": "9.1.1", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - } - }, - "@graphql-tools/utils": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.1.1.tgz", - "integrity": "sha512-DXKLIEDbihK24fktR2hwp/BNIVwULIHaSTNTNhXS+19vgT50eX9wndx1bPxGwHnVBOONcwjXy0roQac49vdt/w==", - "dev": true, - "optional": true, - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@graphql-tools/schema": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", - "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/merge": "8.3.1", - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - } - }, - "@graphql-tools/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", - "dev": true, - "optional": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@josephg/resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==", - "dev": true, - "optional": true - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@multiformats/base-x": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", - "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@openzeppelin/contracts": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz", - "integrity": "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==", - "dev": true - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" - }, - "@solidity-parser/parser": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", - "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", - "dev": true, - "optional": true, - "requires": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "@sovpro/delimited-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sovpro/delimited-stream/-/delimited-stream-1.1.0.tgz", - "integrity": "sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==" - }, - "@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "requires": { - "defer-to-connect": "^2.0.1" - } - }, - "@taikai/dappkit-launchpad": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/@taikai/dappkit-launchpad/-/dappkit-launchpad-0.0.19.tgz", - "integrity": "sha512-6sXp4BY5QX+hlWQxOu7p1/VYS/xBK+ys25PoSbZsqOiRWJJbNsqMeqlK0QHbjhrg7JD0L/KEtBf58Qut7nEisQ==", - "dev": true, - "requires": { - "change-case": "^4.1.2", - "handlebars": "^4.7.7", - "yargs": "^17.4.1" - } - }, - "@truffle/abi-utils": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.5.tgz", - "integrity": "sha512-nGIMNDjl1NhTxI5lSecOWoLFH8A+aDRPrMejke6Cb2ok8FWyTPCaHmlC8S0Kdi/Egp9m3CNI1TYsy9w9Y3E3jA==", - "dev": true, - "requires": { - "change-case": "3.0.2", - "fast-check": "3.1.1", - "web3-utils": "1.7.4" - }, - "dependencies": { - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "change-case": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", - "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", - "dev": true, - "requires": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" - } - }, - "constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", - "dev": true, - "requires": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" - } - }, - "dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" - } - }, - "snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", - "dev": true, - "requires": { - "upper-case": "^1.1.1" - } - }, - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/artifactor": { - "version": "4.0.176", - "resolved": "https://registry.npmjs.org/@truffle/artifactor/-/artifactor-4.0.176.tgz", - "integrity": "sha512-wolvrYHb3FPpOV7YGxNsRQLuqbjaUEVmbF9Fq7SdoU4vHAqqvM/TudlYcoIAewOBqpvE2XaRLzSofJ2DjI6S+g==", - "dev": true, - "requires": { - "@truffle/contract-schema": "^3.4.11", - "fs-extra": "^9.1.0", - "lodash": "^4.17.21" - } - }, - "@truffle/blockchain-utils": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.5.tgz", - "integrity": "sha512-WwvKafKYbU0H3ewk3Y3ZZrWxPEYDEtqNkn1BZFPP8GkbDLNLbgZSW6cA0fGhe8veqvkK3q+CmGufr1/tBDW+OQ==", - "dev": true - }, - "@truffle/code-utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-3.0.1.tgz", - "integrity": "sha512-6cv318jVAvEvg7u7jFq1G6P6K1CMXKNG2btg2qgpmsTQURp4KrqeVrrZegYgx9l4hocpNZ8UAYc9Qw5ATrDg4g==", - "dev": true, - "optional": true, - "requires": { - "cbor": "^5.2.0" - } - }, - "@truffle/codec": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.10.tgz", - "integrity": "sha512-+uPnImtjNUzRhWOp5GG9AeSEuG1o9iVRpCsodQ04podKqYagtjNOKSe7jqNLJCbZ1Vpbvztmb9KzbwOJTLZS9A==", - "dev": true, - "requires": { - "@truffle/abi-utils": "^0.3.5", - "@truffle/compile-common": "^0.9.1", - "big.js": "^6.0.3", - "bn.js": "^5.1.3", - "cbor": "^5.2.0", - "debug": "^4.3.1", - "lodash": "^4.17.21", - "semver": "7.3.7", - "utf8": "^3.0.0", - "web3-utils": "1.7.4" - }, - "dependencies": { - "@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "requires": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/compile-common": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.7.34.tgz", - "integrity": "sha512-NA8HuTCw6pgTpCyMd7M70Ii8AVD921R95UnXB3dwVWwEyV1OksaAsTKfdLxeLnFR4ISkK6o2NqpFb/lM3+V+9w==", - "dev": true, - "requires": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "@truffle/compile-solidity": { - "version": "6.0.51", - "resolved": "https://registry.npmjs.org/@truffle/compile-solidity/-/compile-solidity-6.0.51.tgz", - "integrity": "sha512-DZaBZvIFM1N2yqlEz4GqagF24+k8g/l7FhCUN3rZT7uXKB+BoXRRILX1jvZn0tOARD6u3odttleuEXDXDSgphg==", - "dev": true, - "requires": { - "@truffle/compile-common": "^0.9.1", - "@truffle/config": "1.3.29", - "@truffle/contract-sources": "^0.2.0", - "@truffle/expect": "^0.1.4", - "@truffle/profiler": "^0.1.37", - "axios": "0.27.2", - "axios-retry": "^3.1.9", - "debug": "^4.3.1", - "fs-extra": "^9.1.0", - "iter-tools": "^7.0.2", - "lodash": "^4.17.21", - "node-abort-controller": "^3.0.1", - "original-require": "^1.0.1", - "require-from-string": "^2.0.2", - "semver": "7.3.7", - "solc": "0.8.17" - }, - "dependencies": { - "@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "requires": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - } - } - }, - "@truffle/compile-vyper": { - "version": "3.1.86", - "resolved": "https://registry.npmjs.org/@truffle/compile-vyper/-/compile-vyper-3.1.86.tgz", - "integrity": "sha512-ZfDOn9lpBwdGf/4wA+uTE+jueARj4GdTqSK0CX+ye36r05aYTyOKIdmeu1LiSjjg0XyAloUzXxkwKukukRUxfg==", - "dev": true, - "requires": { - "@truffle/compile-common": "^0.9.1", - "@truffle/config": "1.3.29", - "@truffle/contract-sources": "^0.2.0", - "@truffle/profiler": "^0.1.37", - "@truffle/resolver": "^9.0.24", - "colors": "1.4.0", - "debug": "^4.3.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", - "semver": "7.3.7" - }, - "dependencies": { - "@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "requires": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - } - } - }, - "@truffle/config": { - "version": "1.3.29", - "resolved": "https://registry.npmjs.org/@truffle/config/-/config-1.3.29.tgz", - "integrity": "sha512-lj8SL2388m2IQ19OtwB3PbuCSGegCr32MTtS2AZW5JVxaKGMAGiWyaTl36dT870FCaGTYKSI9g2eAF/NbbtqXQ==", - "dev": true, - "requires": { - "@truffle/error": "^0.1.0", - "@truffle/events": "0.1.6", - "@truffle/provider": "^0.2.55", - "conf": "^10.0.2", - "find-up": "^2.1.0", - "lodash": "^4.17.21", - "original-require": "^1.0.1" - } - }, - "@truffle/contract": { - "version": "4.6.8", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.8.tgz", - "integrity": "sha512-cndUs/3WaF1RUz3whQHvFQS/9uTyadR5iiyNdOdvF4OYLN3agM3lLY8YIEGRgz6F9CELBoUnD15daXLEj6RGuw==", - "dev": true, - "requires": { - "@ensdomains/ensjs": "^2.1.0", - "@truffle/blockchain-utils": "^0.1.5", - "@truffle/contract-schema": "^3.4.11", - "@truffle/debug-utils": "^6.0.41", - "@truffle/error": "^0.1.1", - "@truffle/interface-adapter": "^0.5.25", - "bignumber.js": "^7.2.1", - "debug": "^4.3.1", - "ethers": "^4.0.32", - "web3": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "bignumber.js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", - "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", - "dev": true - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "web3": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", - "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", - "dev": true, - "requires": { - "web3-bzz": "1.7.4", - "web3-core": "1.7.4", - "web3-eth": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-shh": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-bzz": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", - "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - } - }, - "web3-core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", - "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-requestmanager": "1.7.4", - "web3-utils": "1.7.4" - }, - "dependencies": { - "bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", - "dev": true - } - } - }, - "web3-core-method": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", - "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", - "dev": true, - "requires": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-core-requestmanager": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", - "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", - "dev": true, - "requires": { - "util": "^0.12.0", - "web3-core-helpers": "1.7.4", - "web3-providers-http": "1.7.4", - "web3-providers-ipc": "1.7.4", - "web3-providers-ws": "1.7.4" - } - }, - "web3-core-subscriptions": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", - "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4" - } - }, - "web3-eth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", - "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-accounts": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-eth-ens": "1.7.4", - "web3-eth-iban": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-accounts": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", - "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.2", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-contract": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", - "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-ens": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", - "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", - "dev": true, - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-personal": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", - "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-net": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", - "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-providers-http": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", - "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", - "dev": true, - "requires": { - "web3-core-helpers": "1.7.4", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", - "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", - "dev": true, - "requires": { - "oboe": "2.1.5", - "web3-core-helpers": "1.7.4" - } - }, - "web3-providers-ws": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", - "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4", - "websocket": "^1.0.32" - } - }, - "web3-shh": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", - "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-net": "1.7.4" - } - }, - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/contract-schema": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.11.tgz", - "integrity": "sha512-wReyVZUPyU9Zy5PSCugBLG1nnruBmRAJ/gmoirQiJ9N2n+s1iGBTY49tkDqFMz3XUUE0kplfdb9YKZJlLkTWzQ==", - "dev": true, - "requires": { - "ajv": "^6.10.0", - "debug": "^4.3.1" - } - }, - "@truffle/contract-sources": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@truffle/contract-sources/-/contract-sources-0.2.0.tgz", - "integrity": "sha512-S14SKQW3EGbLip3rBU7i+VtB5ImBfBz6TpviSXxQsYY6Udy+aqJEmTkVKA/KhHeOG6yQyZqvb4dWIbMtEh+tYg==", - "dev": true, - "requires": { - "debug": "^4.3.1", - "glob": "^7.1.6" - } - }, - "@truffle/db": { - "version": "1.0.23", - "resolved": "https://registry.npmjs.org/@truffle/db/-/db-1.0.23.tgz", - "integrity": "sha512-wixnU5++aCqnuk1u7N4FFvmrP1z8WsLzGSbbWGcIa5YB/SYDPTGgapJNP5h+P+HB1XMOSRCAbeLW6D7cw+rWPg==", - "dev": true, - "optional": true, - "requires": { - "@graphql-tools/delegate": "^8.4.3", - "@graphql-tools/schema": "^8.3.1", - "@truffle/abi-utils": "^0.3.2", - "@truffle/code-utils": "^3.0.0", - "@truffle/config": "1.3.29", - "abstract-leveldown": "^7.2.0", - "apollo-server": "^3.6.3", - "debug": "^4.3.1", - "fs-extra": "^9.1.0", - "graphql": "^15.3.0", - "graphql-tag": "^2.12.6", - "json-stable-stringify": "^1.0.1", - "pascal-case": "^2.0.1", - "pluralize": "^8.0.0", - "pouchdb": "7.3.0", - "pouchdb-adapter-memory": "^7.1.1", - "pouchdb-adapter-node-websql": "^7.0.0", - "pouchdb-debug": "^7.1.1", - "pouchdb-find": "^7.0.0", - "web3-utils": "1.7.4" - }, - "dependencies": { - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "optional": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/db-loader": { - "version": "0.1.33", - "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.1.33.tgz", - "integrity": "sha512-OHt9Lu2xI+DVCC8WdEtNJrZFbGq9yFEBPjPJZVTDQI4SMd7I6tQmRmusXTKCSCDEHE0xAp02stmKjSHC+pxJpA==", - "dev": true, - "requires": { - "@truffle/db": "^1.0.23" - } - }, - "@truffle/debug-utils": { - "version": "6.0.41", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.41.tgz", - "integrity": "sha512-8sk0fmcN3s11cvAJyODoDPWK9W730c6UAreyeHNj03PWg04D+YUqHpRlV2evdqAx2om1p+Xp03eQag15mg//jQ==", - "dev": true, - "requires": { - "@truffle/codec": "^0.14.10", - "@trufflesuite/chromafi": "^3.0.0", - "bn.js": "^5.1.3", - "chalk": "^2.4.2", - "debug": "^4.3.1", - "highlightjs-solidity": "^2.0.5" - } - }, - "@truffle/error": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.1.1.tgz", - "integrity": "sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA==", - "dev": true - }, - "@truffle/events": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@truffle/events/-/events-0.1.6.tgz", - "integrity": "sha512-x36fB83En+K91Uoiv47qZ3leeo3AhVFh9i/wtgHQxDXzOdSjKR7bD8Y4lZua2MABg9Kg5Z4r8iWrPfeWLeqJmg==", - "dev": true, - "requires": { - "@truffle/spinners": "^0.2.0", - "emittery": "^0.4.1", - "web3-utils": "1.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "web3-utils": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.3.tgz", - "integrity": "sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/expect": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@truffle/expect/-/expect-0.1.4.tgz", - "integrity": "sha512-uL0FBL5yWbyMB0Y5sEPeYPWwSmAcx/hnXr/GKOQjDGsuBth6XUySQ5gTp+MTPrrGvwEx+zduqvvvT0OwYnd14Q==", - "dev": true - }, - "@truffle/external-compile": { - "version": "2.0.64", - "resolved": "https://registry.npmjs.org/@truffle/external-compile/-/external-compile-2.0.64.tgz", - "integrity": "sha512-nJR/rnTY55a8SwtGtqMlfSbOZU4g9wcRTrzG8d6Ber+cRPX7PAfZRzSgXbJV+VSCDjGSLA04gRpsbHv/cf6Tfg==", - "dev": true, - "requires": { - "@truffle/compile-common": "^0.9.1", - "@truffle/config": "1.3.29", - "@truffle/contract-schema": "^3.4.11", - "@truffle/expect": "^0.1.4", - "debug": "^4.3.1", - "glob": "^7.1.6", - "web3-utils": "1.7.4" - }, - "dependencies": { - "@truffle/compile-common": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.1.tgz", - "integrity": "sha512-mhdkX6ExZImHSBO3jGm6aAn8NpVtMTdjq50jRXY/O59/ZNC0J9WpRapxrAKUVNc+XydMdBlfeEpXoqTJg7cbXw==", - "dev": true, - "requires": { - "@truffle/error": "^0.1.1", - "colors": "1.4.0" - } - }, - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/interface-adapter": { - "version": "0.5.25", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.25.tgz", - "integrity": "sha512-7EpA9Tyq9It2z7GaLPHljEdmCtVFAkYko6vxXbN+H5PdL6zjEOw66bzMbKisKkh3px5dUd1OlRwPljjs34dpAQ==", - "dev": true, - "requires": { - "bn.js": "^5.1.3", - "ethers": "^4.0.32", - "web3": "1.7.4" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "web3": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", - "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", - "dev": true, - "requires": { - "web3-bzz": "1.7.4", - "web3-core": "1.7.4", - "web3-eth": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-shh": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-bzz": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", - "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - } - }, - "web3-core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", - "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-requestmanager": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-core-method": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", - "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", - "dev": true, - "requires": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-core-requestmanager": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", - "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", - "dev": true, - "requires": { - "util": "^0.12.0", - "web3-core-helpers": "1.7.4", - "web3-providers-http": "1.7.4", - "web3-providers-ipc": "1.7.4", - "web3-providers-ws": "1.7.4" - } - }, - "web3-core-subscriptions": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", - "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4" - } - }, - "web3-eth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", - "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-accounts": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-eth-ens": "1.7.4", - "web3-eth-iban": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-accounts": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", - "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.2", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-contract": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", - "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-ens": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", - "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", - "dev": true, - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-personal": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", - "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-net": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", - "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-providers-http": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", - "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", - "dev": true, - "requires": { - "web3-core-helpers": "1.7.4", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", - "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", - "dev": true, - "requires": { - "oboe": "2.1.5", - "web3-core-helpers": "1.7.4" - } - }, - "web3-providers-ws": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", - "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4", - "websocket": "^1.0.32" - } - }, - "web3-shh": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", - "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-net": "1.7.4" - } - }, - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/profiler": { - "version": "0.1.37", - "resolved": "https://registry.npmjs.org/@truffle/profiler/-/profiler-0.1.37.tgz", - "integrity": "sha512-G5AdR4VXwwmwZGXQM3fPcV0CONAiTqH2RDGcICJG14veqxU5VtIJ7Sz3zbaLhSv9SVMYY7oQcGUJB9+6PQMakg==", - "dev": true, - "requires": { - "@truffle/contract-sources": "^0.2.0", - "@truffle/expect": "^0.1.4", - "debug": "^4.3.1" - } - }, - "@truffle/provider": { - "version": "0.2.64", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.64.tgz", - "integrity": "sha512-ZwPsofw4EsCq/2h0t73SPnnFezu4YQWBmK4FxFaOUX0F+o8NsZuHKyfJzuZwyZbiktYmefM3yD9rM0Dj4BhNbw==", - "dev": true, - "requires": { - "@truffle/error": "^0.1.1", - "@truffle/interface-adapter": "^0.5.25", - "debug": "^4.3.1", - "web3": "1.7.4" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "web3": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", - "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", - "dev": true, - "requires": { - "web3-bzz": "1.7.4", - "web3-core": "1.7.4", - "web3-eth": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-shh": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-bzz": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", - "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - } - }, - "web3-core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", - "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-requestmanager": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-core-method": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", - "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", - "dev": true, - "requires": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-core-requestmanager": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", - "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", - "dev": true, - "requires": { - "util": "^0.12.0", - "web3-core-helpers": "1.7.4", - "web3-providers-http": "1.7.4", - "web3-providers-ipc": "1.7.4", - "web3-providers-ws": "1.7.4" - } - }, - "web3-core-subscriptions": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", - "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4" - } - }, - "web3-eth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", - "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-accounts": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-eth-ens": "1.7.4", - "web3-eth-iban": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-accounts": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", - "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.2", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-contract": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", - "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", - "dev": true, - "requires": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-ens": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", - "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", - "dev": true, - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-eth-personal": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", - "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-net": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", - "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - } - }, - "web3-providers-http": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", - "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", - "dev": true, - "requires": { - "web3-core-helpers": "1.7.4", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", - "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", - "dev": true, - "requires": { - "oboe": "2.1.5", - "web3-core-helpers": "1.7.4" - } - }, - "web3-providers-ws": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", - "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4", - "websocket": "^1.0.32" - } - }, - "web3-shh": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", - "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", - "dev": true, - "requires": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-net": "1.7.4" - } - }, - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/provisioner": { - "version": "0.2.68", - "resolved": "https://registry.npmjs.org/@truffle/provisioner/-/provisioner-0.2.68.tgz", - "integrity": "sha512-o6SjYoOCZUF1cBGC4hg+qwmTaicO3G+O3hDRWDcifnaXXP1k+0oP1WnximmmXzxKIOSUYG+5+Ib8/4267LkdfQ==", - "dev": true, - "requires": { - "@truffle/config": "1.3.29" - } - }, - "@truffle/resolver": { - "version": "9.0.24", - "resolved": "https://registry.npmjs.org/@truffle/resolver/-/resolver-9.0.24.tgz", - "integrity": "sha512-sTRnPqcPqt4BizkRos8e+k+ZngvVeP8Gaaum7FTrkVROIEMeJq+Kz4BD7tV/q16yqZILskoFCslhKyQTCPlmXw==", - "dev": true, - "requires": { - "@truffle/compile-solidity": "^6.0.51", - "@truffle/contract": "^4.6.8", - "@truffle/contract-sources": "^0.2.0", - "@truffle/expect": "^0.1.4", - "@truffle/provisioner": "^0.2.68", - "abi-to-sol": "^0.6.6", - "debug": "^4.3.1", - "detect-installed": "^2.0.4", - "fs-extra": "^9.1.0", - "get-installed-path": "^4.0.8", - "glob": "^7.1.6", - "web3-utils": "1.7.4" - }, - "dependencies": { - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/spinners": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@truffle/spinners/-/spinners-0.2.3.tgz", - "integrity": "sha512-YnaQ+oBRQ1I1+/P18i8oSW4orUYi6vwpZQxauEZ5X0L8atjKq+RWdiNaza6J6L+KOLunXM4+pWxnNzuUmxlJZw==", - "dev": true, - "requires": { - "@trufflesuite/spinnies": "^0.1.1" - } - }, - "@truffle/workflow-compile": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@truffle/workflow-compile/-/workflow-compile-4.0.21.tgz", - "integrity": "sha512-3BNpfR8yzKfFkdupszaR39iGNSYhyIzZe6O+YyWDP4Aq16yrMy+fEZA9k9FA/KaS1toPoQi4npbCqqWhf1PELA==", - "dev": true, - "requires": { - "@truffle/artifactor": "^4.0.158", - "@truffle/compile-common": "^0.7.31", - "@truffle/compile-solidity": "^6.0.31", - "@truffle/compile-vyper": "^3.1.66", - "@truffle/config": "1.3.29", - "@truffle/db-loader": "^0.1.20", - "@truffle/expect": "^0.1.1", - "@truffle/external-compile": "^2.0.47", - "@truffle/resolver": "^9.0.4", - "fs-extra": "^9.1.0" - } - }, - "@trufflesuite/chromafi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz", - "integrity": "sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "chalk": "^2.3.2", - "cheerio": "^1.0.0-rc.2", - "detect-indent": "^5.0.0", - "highlight.js": "^10.4.1", - "lodash.merge": "^4.6.2", - "strip-ansi": "^4.0.0", - "strip-indent": "^2.0.0" - } - }, - "@trufflesuite/spinnies": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@trufflesuite/spinnies/-/spinnies-0.1.1.tgz", - "integrity": "sha512-jltEtmFJj6xmQqr85gP8OqBHCEiId+zw+uAsb3DyLLRD17O6sySW6Afa2Z/jpzSafj+32ssDfLJ+c0of1NLqcA==", - "dev": true, - "requires": { - "chalk": "^4.1.2", - "cli-cursor": "^3.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "requires": { - "@types/node": "*" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "optional": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "@types/chai-like": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/chai-like/-/chai-like-1.1.1.tgz", - "integrity": "sha512-s46EZsupBuVhLn66DbRee5B0SELLmL4nFXVrBiV29BxLGm9Sh7Bful623j3AfiQRu2zAP4cnlZ3ETWB3eWc4bA==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/chai-things": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@types/chai-things/-/chai-things-0.0.35.tgz", - "integrity": "sha512-BC8FwMf9FHj87XT4dgTwbdb8dNRilGqYWGmwLPdJ54YNk6K2PlcFTt68NGHjgPDnms8zIYcOtmPePd0mPNTo/Q==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true, - "optional": true - }, - "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "optional": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "requires": { - "@types/node": "*" - } - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true, - "optional": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", - "dev": true - }, - "@types/node": { - "version": "18.11.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz", - "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==" - }, - "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true, - "optional": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true, - "optional": true - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "requires": { - "@types/node": "*" - } - }, - "@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "requires": { - "@types/node": "*" - } - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "optional": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/yargs": { - "version": "17.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.15.tgz", - "integrity": "sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz", - "integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/type-utils": "5.45.0", - "@typescript-eslint/utils": "5.45.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz", - "integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz", - "integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz", - "integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.45.0", - "@typescript-eslint/utils": "5.45.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz", - "integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz", - "integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz", - "integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz", - "integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.45.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "@uniswap/lib": { - "version": "4.0.1-alpha", - "resolved": "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz", - "integrity": "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==", - "dev": true - }, - "@uniswap/v2-core": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz", - "integrity": "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==", - "dev": true - }, - "@uniswap/v3-core": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.1.tgz", - "integrity": "sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ==", - "dev": true - }, - "@uniswap/v3-periphery": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.3.tgz", - "integrity": "sha512-80c+wtVzl5JJT8UQskxVYYG3oZb4pkhY0zDe0ab/RX4+8f9+W5d8wI4BT0wLB0wFQTSnbW+QdBSpkHA/vRyGBA==", - "dev": true, - "requires": { - "@openzeppelin/contracts": "3.4.2-solc-0.7", - "@uniswap/lib": "^4.0.1-alpha", - "@uniswap/v2-core": "1.0.1", - "@uniswap/v3-core": "1.0.0", - "base64-sol": "1.0.1" - }, - "dependencies": { - "@openzeppelin/contracts": { - "version": "3.4.2-solc-0.7", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz", - "integrity": "sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==", - "dev": true - }, - "@uniswap/v3-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.0.tgz", - "integrity": "sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA==", - "dev": true - } - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "optional": true - }, - "abi-to-sol": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/abi-to-sol/-/abi-to-sol-0.6.6.tgz", - "integrity": "sha512-PRn81rSpv6NXFPYQSw7ujruqIP6UkwZ/XoFldtiqCX8+2kHVc73xVaUVvdbro06vvBVZiwnxhEIGdI4BRMwGHw==", - "dev": true, - "requires": { - "@truffle/abi-utils": "^0.3.0", - "@truffle/contract-schema": "^3.3.1", - "ajv": "^6.12.5", - "better-ajv-errors": "^0.8.2", - "neodoc": "^2.0.2", - "prettier": "^2.7.1", - "prettier-plugin-solidity": "^1.0.0-dev.23", - "semver": "^7.3.5", - "source-map-support": "^0.5.19" - } - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" - }, - "abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "antlr4ts": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", - "dev": true, - "optional": true - }, - "any-signal": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", - "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", - "requires": { - "abort-controller": "^3.0.0", - "native-abort-controller": "^1.0.3" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "dev": true, - "optional": true, - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - } - }, - "apollo-reporting-protobuf": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.3.tgz", - "integrity": "sha512-L3+DdClhLMaRZWVmMbBcwl4Ic77CnEBPXLW53F7hkYhkaZD88ivbCVB1w/x5gunO6ZHrdzhjq0FHmTsBvPo7aQ==", - "dev": true, - "optional": true, - "requires": { - "@apollo/protobufjs": "1.2.6" - }, - "dependencies": { - "@apollo/protobufjs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz", - "integrity": "sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==", - "dev": true, - "optional": true, - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - } - }, - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true, - "optional": true - } - } - }, - "apollo-server": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.11.1.tgz", - "integrity": "sha512-3RZ/veWGbi0zXy2YVaPkYIAavpbHyEVui91DNYvz6UFS0fZmhJwG7f1VmGheeRiqiV8nFa8GuBejI1niTeAYzA==", - "dev": true, - "optional": true, - "requires": { - "@types/express": "4.17.14", - "apollo-server-core": "^3.11.1", - "apollo-server-express": "^3.11.1", - "express": "^4.17.1" - } - }, - "apollo-server-core": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.11.1.tgz", - "integrity": "sha512-t/eCKrRFK1lYZlc5pHD99iG7Np7CEm3SmbDiONA7fckR3EaB/pdsEdIkIwQ5QBBpT5JLp/nwvrZRVwhaWmaRvw==", - "dev": true, - "optional": true, - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.3.3", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.7.1", - "apollo-server-types": "^3.7.1", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "node-abort-controller": "^3.0.1", - "sha.js": "^2.4.11", - "uuid": "^9.0.0", - "whatwg-mimetype": "^3.0.0" - } - }, - "apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "dev": true, - "optional": true, - "requires": { - "node-fetch": "^2.6.7" - } - }, - "apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", - "dev": true, - "optional": true, - "requires": {} - }, - "apollo-server-express": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.11.1.tgz", - "integrity": "sha512-x9ngcpXbBlt4naCXTwNtBFb/mOd9OU0wtFXvJkObHF26NsRazu3DxDfEuekA6V1NFOocD+A9jmVMQeQWug5MgA==", - "dev": true, - "optional": true, - "requires": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.14", - "@types/express-serve-static-core": "4.17.31", - "accepts": "^1.3.5", - "apollo-server-core": "^3.11.1", - "apollo-server-types": "^3.7.1", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - } - }, - "apollo-server-plugin-base": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.1.tgz", - "integrity": "sha512-g3vJStmQtQvjGI289UkLMfThmOEOddpVgHLHT2bNj0sCD/bbisj4xKbBHETqaURokteqSWyyd4RDTUe0wAUDNQ==", - "dev": true, - "optional": true, - "requires": { - "apollo-server-types": "^3.7.1" - } - }, - "apollo-server-types": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.7.1.tgz", - "integrity": "sha512-aE9RDVplmkaOj/OduNmGa+0a1B5RIWI0o3zC1zLvBTVWMKTpo0ifVf11TyMkLCY+T7cnZqVqwyShziOyC3FyUw==", - "dev": true, - "optional": true, - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.3", - "apollo-server-env": "^4.2.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "argsarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/argsarray/-/argsarray-0.0.1.tgz", - "integrity": "sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg==", - "dev": true, - "optional": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dev": true, - "optional": true, - "requires": { - "retry": "0.13.1" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dev": true - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "axios-retry": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.3.1.tgz", - "integrity": "sha512-RohAUQTDxBSWLFEnoIG/6bvmy8l3TfpkclgStjl5MDCMBDgapAWCmr1r/9harQfWC8bzLC8job6UcL1A1Yc+/Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.15.4", - "is-retry-allowed": "^2.2.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "base64-sol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/base64-sol/-/base64-sol-1.0.1.tgz", - "integrity": "sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true - }, - "better-ajv-errors": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-0.8.2.tgz", - "integrity": "sha512-FnODTBJSQSHmJXDLPiC7ca0dC4S1HSTPv1+Hg2sm/C71i3Dj0l1jcUEaq/3OQ6MmnUveshTsUvUj65pDSr3Qow==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/runtime": "^7.0.0", - "chalk": "^2.4.1", - "core-js": "^3.2.1", - "json-to-ast": "^2.0.3", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - } - }, - "big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", - "dev": true - }, - "big.js": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", - "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", - "dev": true - }, - "bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "requires": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" - }, - "blob-to-it": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz", - "integrity": "sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA==", - "requires": { - "browser-readablestream-to-it": "^1.0.3" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "borc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/borc/-/borc-3.0.0.tgz", - "integrity": "sha512-ec4JmVC46kE0+layfnwM3l15O70MlFiEbmQHY/vpqIKiUtPVntv4BY4NVnz3N4vb21edV3mY97XVckFvYHWF9g==", - "requires": { - "bignumber.js": "^9.0.0", - "buffer": "^6.0.3", - "commander": "^2.15.0", - "ieee754": "^1.1.13", - "iso-url": "^1.1.5", - "json-text-sequence": "~0.3.0", - "readable-stream": "^3.6.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "browser-readablestream-to-it": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz", - "integrity": "sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==" - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "requires": { - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - } - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-lookup": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", - "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==" - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - } - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", - "dev": true - }, - "capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true, - "optional": true - }, - "cbor": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", - "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", - "dev": true, - "requires": { - "bignumber.js": "^9.0.1", - "nofilter": "^1.0.4" - } - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chai-like": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chai-like/-/chai-like-1.1.1.tgz", - "integrity": "sha512-VKa9z/SnhXhkT1zIjtPACFWSoWsqVoaz1Vg+ecrKo5DCKVlgL30F/pEyEvXPBOVwCgLZcWUleCM/C1okaKdTTA==", - "dev": true, - "requires": {} - }, - "chai-things": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chai-things/-/chai-things-0.2.0.tgz", - "integrity": "sha512-6ns0SU21xdRCoEXVKH3HGbwnsgfVMXQ+sU5V8PI9rfxaITos8lss1vUxbF1FAcJKjfqmmmLVlr/z3sLes00w+A==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - } - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "requires": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "requires": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "dev": true, - "optional": true - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "code-error-fragment": { - "version": "0.0.230", - "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "dev": true, - "requires": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true, - "optional": true - }, - "constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "requires": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true - }, - "core-js": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", - "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-addr-codec": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz", - "integrity": "sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==", - "dev": true, - "requires": { - "base-x": "^3.0.8", - "big-integer": "1.6.36", - "blakejs": "^1.1.0", - "bs58": "^4.0.1", - "ripemd160-min": "0.0.6", - "safe-buffer": "^5.2.0", - "sha3": "^2.1.1" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", - "dev": true, - "optional": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "dataloader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz", - "integrity": "sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==", - "dev": true, - "optional": true - }, - "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" - }, - "debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dev": true, - "requires": { - "mimic-fn": "^3.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - } - } - }, - "deep-eql": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", - "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "optional": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" - }, - "deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", - "dev": true, - "optional": true, - "requires": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "optional": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true - }, - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "optional": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", - "dev": true - }, - "detect-installed": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-installed/-/detect-installed-2.0.4.tgz", - "integrity": "sha512-IpGo06Ff/rMGTKjFvVPbY9aE4mRT2XP3eYHC/ZS25LKDr2h8Gbv74Ez2q/qd7IYDqD9ZjI/VGedHNXsbKZ/Eig==", - "dev": true, - "requires": { - "get-installed-path": "^2.0.3" - }, - "dependencies": { - "get-installed-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", - "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", - "dev": true, - "requires": { - "global-modules": "1.0.0" - } - } - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "optional": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-over-http-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", - "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", - "requires": { - "debug": "^4.3.1", - "native-fetch": "^3.0.0", - "receptacle": "^1.3.2" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "dev": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true - }, - "double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ==", - "dev": true, - "optional": true - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-fetch": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.9.1.tgz", - "integrity": "sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==", - "requires": { - "encoding": "^0.1.13" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "emittery": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz", - "integrity": "sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ==", - "dev": true - }, - "emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", - "dev": true, - "optional": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "dev": true, - "optional": true, - "requires": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "optional": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true - }, - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "end-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/end-stream/-/end-stream-0.1.0.tgz", - "integrity": "sha512-Brl10T8kYnc75IepKizW6Y9liyW8ikz1B7n/xoHrJxoVSSjoqPn30sb7XVFfQERK4QfUMYRGs9dhWwtt2eu6uA==", - "dev": true, - "optional": true, - "requires": { - "write-stream": "~0.4.3" - } - }, - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", - "requires": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" - } - } - }, - "eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "requires": { - "js-sha3": "^0.8.0" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - }, - "dependencies": { - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - } - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - }, - "ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "requires": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "dev": true - } - } - }, - "ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" - } - } - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - }, - "fast-check": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz", - "integrity": "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==", - "dev": true, - "requires": { - "pure-rand": "^5.0.1" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fetch-cookie": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.11.0.tgz", - "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==", - "dev": true, - "optional": true, - "requires": { - "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "find": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", - "integrity": "sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==", - "dev": true, - "requires": { - "traverse-chain": "~0.1.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "form-data-encoder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", - "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true, - "optional": true - }, - "ganache": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.5.0.tgz", - "integrity": "sha512-afNTJYBEaFrLPRrn7eUxH39TgnrffvHn/4T6THzQrc3rpfe4DOxw2nY2XEQxfsq1t4OqKSXtxomzyo26RZiOzw==", - "dev": true, - "requires": { - "@trufflesuite/bigint-buffer": "1.1.10", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "5.1.1", - "@types/seedrandom": "3.0.1", - "bufferutil": "4.0.5", - "emittery": "0.10.0", - "keccak": "3.0.2", - "leveldown": "6.1.0", - "secp256k1": "4.0.3", - "utf-8-validate": "5.0.7" - }, - "dependencies": { - "@trufflesuite/bigint-buffer": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz", - "integrity": "sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw==", - "bundled": true, - "dev": true, - "requires": { - "node-gyp-build": "4.4.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "bundled": true, - "dev": true - } - } - }, - "@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "bundled": true, - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "bundled": true, - "dev": true - }, - "@types/node": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", - "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", - "bundled": true, - "dev": true - }, - "@types/seedrandom": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz", - "integrity": "sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==", - "bundled": true, - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "bundled": true, - "dev": true - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "bundled": true, - "dev": true - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "bundled": true, - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "dev": true, - "optional": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "catering": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", - "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", - "bundled": true, - "dev": true, - "requires": { - "queue-tick": "^1.0.0" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "bundled": true, - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "bundled": true, - "dev": true - } - } - }, - "emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "bundled": true, - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "bundled": true, - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "bundled": true, - "dev": true - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "bundled": true, - "dev": true - }, - "keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "bundled": true, - "dev": true, - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - } - }, - "leveldown": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", - "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", - "bundled": true, - "dev": true, - "requires": { - "abstract-leveldown": "^7.2.0", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "bundled": true, - "dev": true, - "requires": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - } - }, - "level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "bundled": true, - "dev": true, - "requires": { - "catering": "^2.1.0" - } - }, - "level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "bundled": true, - "dev": true - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "bundled": true, - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "bundled": true, - "dev": true - }, - "napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "bundled": true, - "dev": true - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "bundled": true, - "dev": true - }, - "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "bundled": true, - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "bundled": true, - "dev": true - }, - "queue-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", - "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", - "bundled": true, - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "bundled": true, - "dev": true - }, - "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "bundled": true, - "dev": true, - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "utf-8-validate": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", - "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", - "dev": true, - "optional": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "bundled": true, - "dev": true - } - } - }, - "ganache-time-traveler": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/ganache-time-traveler/-/ganache-time-traveler-1.0.16.tgz", - "integrity": "sha512-oUaQge9tiT/zzcGqehqJcoH10claKi9QFhq7zI1Wa3KtdPobjgLVMYvqXCJuHCAZoS7sHvLB/N/rSnhmivxaKw==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "get-installed-path": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-4.0.8.tgz", - "integrity": "sha512-PmANK1xElIHlHH2tXfOoTnSDUjX1X3GvKK6ZyLbUnSCCn1pADwu67eVWttuPzJWrXDDT2MfO6uAaKILOFfitmA==", - "dev": true, - "requires": { - "global-modules": "1.0.0" - } - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", - "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==" - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "got": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", - "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", - "requires": { - "@sindresorhus/is": "^4.6.0", - "@szmarczak/http-timer": "^5.0.1", - "@types/cacheable-request": "^6.0.2", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^6.0.4", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "form-data-encoder": "1.7.1", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "dev": true, - "optional": true - }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dev": true, - "optional": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true, - "optional": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, - "requires": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "dev": true - }, - "highlightjs-solidity": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz", - "integrity": "sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "requires": { - "punycode": "2.1.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", - "dev": true - }, - "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true, - "optional": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "interface-datastore": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-4.0.2.tgz", - "integrity": "sha512-/XRmD7oagZMTaK25rV3WFrejLoUwxZcpgE+eNyZNYvb2jlB5P3MwJCIbetJSlVYK7yvaFmJi8s3f9VLcxJjdog==", - "requires": { - "err-code": "^3.0.1", - "interface-store": "^0.0.2", - "ipfs-utils": "^8.1.2", - "iso-random-stream": "^2.0.0", - "it-all": "^1.0.2", - "it-drain": "^1.0.1", - "it-filter": "^1.0.2", - "it-take": "^1.0.1", - "nanoid": "^3.0.2", - "uint8arrays": "^2.1.5" - } - }, - "interface-ipld-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz", - "integrity": "sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg==", - "requires": { - "cids": "^1.1.6", - "multicodec": "^3.0.1", - "multihashes": "^4.0.2" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "interface-store": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-0.0.2.tgz", - "integrity": "sha512-t4c9GKXH1Vi/WxmppGyIi6iedbGo92YmLneopHmbIEIp27ep7VnrYGA6lM/rLsFo5Tj6TJgIqr3FOk8mvPgIWQ==" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "ipfs-core-types": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.5.2.tgz", - "integrity": "sha512-DOQeL+GFGYMTlnbdtMeBzvfVnyAalSgCfPr8XUCI+FVBZZWwzkt5jZZzGDmF87HVRrMR3FuVyBKZj772mcXKyQ==", - "requires": { - "cids": "^1.1.6", - "interface-datastore": "^4.0.0", - "ipld-block": "^0.11.1", - "multiaddr": "^9.0.1", - "multibase": "^4.0.2" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "ipfs-core-utils": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.8.3.tgz", - "integrity": "sha512-PY7PkCgCtVYtNOe1C3ew1+5D9NqXqizb886R/lyGWe+KsmWtBQkQIk0ZIDwKyHGvG2KA2QQeIDzdOmzBQBJtHQ==", - "requires": { - "any-signal": "^2.1.2", - "blob-to-it": "^1.0.1", - "browser-readablestream-to-it": "^1.0.1", - "cids": "^1.1.6", - "err-code": "^3.0.1", - "ipfs-core-types": "^0.5.2", - "ipfs-unixfs": "^4.0.3", - "ipfs-utils": "^8.1.2", - "it-all": "^1.0.4", - "it-map": "^1.0.4", - "it-peekable": "^1.0.1", - "multiaddr": "^9.0.1", - "multiaddr-to-uri": "^7.0.0", - "parse-duration": "^1.0.0", - "timeout-abort-controller": "^1.1.1", - "uint8arrays": "^2.1.3" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - } - } - }, - "ipfs-http-client": { - "version": "50.1.2", - "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-50.1.2.tgz", - "integrity": "sha512-ZbJlED4wqwFXQFVB9FQDs20ygdq7O/zSq4AvO9KRAmkqUj2TsCWCteUz2fBMnGWLh2tExxeSl/rQbHbJptb8JQ==", - "requires": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.2", - "cids": "^1.1.6", - "debug": "^4.1.1", - "form-data": "^4.0.0", - "ipfs-core-types": "^0.5.2", - "ipfs-core-utils": "^0.8.3", - "ipfs-unixfs": "^4.0.3", - "ipfs-utils": "^8.1.2", - "ipld-block": "^0.11.0", - "ipld-dag-cbor": "^1.0.0", - "ipld-dag-pb": "^0.22.1", - "ipld-raw": "^7.0.0", - "it-last": "^1.0.4", - "it-map": "^1.0.4", - "it-tar": "^3.0.0", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "multiaddr": "^9.0.1", - "multibase": "^4.0.2", - "multicodec": "^3.0.1", - "multihashes": "^4.0.2", - "nanoid": "^3.1.12", - "native-abort-controller": "^1.0.3", - "parse-duration": "^1.0.0", - "stream-to-it": "^0.2.2", - "uint8arrays": "^2.1.3" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - } - } - }, - "ipfs-unixfs": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz", - "integrity": "sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw==", - "requires": { - "err-code": "^3.0.1", - "protobufjs": "^6.10.2" - } - }, - "ipfs-utils": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-8.1.6.tgz", - "integrity": "sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==", - "requires": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^3.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.1.5", - "it-glob": "~0.0.11", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", - "native-fetch": "^3.0.0", - "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", - "stream-to-it": "^0.2.2" - }, - "dependencies": { - "node-fetch": { - "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==" - } - } - }, - "ipld-block": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/ipld-block/-/ipld-block-0.11.1.tgz", - "integrity": "sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw==", - "requires": { - "cids": "^1.0.0" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "ipld-dag-cbor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ipld-dag-cbor/-/ipld-dag-cbor-1.0.1.tgz", - "integrity": "sha512-PZh8rHnRETX5bj60i73W2oq6BXoZnIvYCBDwIffYVJgxMr7BEVd5PycAARBiT6daORJ/4zbqEFR5CcrjeCtm/A==", - "requires": { - "borc": "^3.0.0", - "cids": "^1.0.0", - "interface-ipld-format": "^1.0.0", - "is-circular": "^1.0.2", - "multicodec": "^3.0.1", - "multihashing-async": "^2.0.0", - "uint8arrays": "^2.1.3" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - } - } - }, - "ipld-dag-pb": { - "version": "0.22.3", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz", - "integrity": "sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg==", - "requires": { - "cids": "^1.0.0", - "interface-ipld-format": "^1.0.0", - "multicodec": "^3.0.1", - "multihashing-async": "^2.0.0", - "protobufjs": "^6.10.2", - "stable": "^0.1.8", - "uint8arrays": "^2.0.5" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - } - } - }, - "ipld-raw": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ipld-raw/-/ipld-raw-7.0.1.tgz", - "integrity": "sha512-oaiy0Ot23NCnoBA7sLvPL9qFRC6JDB0IsdZL6rUeZJxzxabQuBLNGYXcqjQ8jlF0UPLEUSO+h8OJh2DZPzL2aQ==", - "requires": { - "cids": "^1.1.6", - "interface-ipld-format": "^1.0.0", - "multicodec": "^3.0.1", - "multihashing-async": "^2.1.2" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "optional": true - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-circular": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-circular/-/is-circular-1.0.2.tgz", - "integrity": "sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA==" - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-electron": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz", - "integrity": "sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw==" - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" - }, - "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "requires": { - "ip-regex": "^4.0.0" - } - }, - "is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", - "dev": true, - "requires": { - "lower-case": "^1.1.0" - }, - "dependencies": { - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - } - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-retry-allowed": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", - "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", - "dev": true - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", - "dev": true, - "requires": { - "upper-case": "^1.1.0" - }, - "dependencies": { - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - } - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "iso-constants": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/iso-constants/-/iso-constants-0.1.2.tgz", - "integrity": "sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ==" - }, - "iso-random-stream": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/iso-random-stream/-/iso-random-stream-2.0.2.tgz", - "integrity": "sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==", - "requires": { - "events": "^3.3.0", - "readable-stream": "^3.4.0" - } - }, - "iso-url": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", - "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "it-all": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", - "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==" - }, - "it-concat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/it-concat/-/it-concat-2.0.0.tgz", - "integrity": "sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw==", - "requires": { - "bl": "^5.0.0" - } - }, - "it-drain": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", - "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==" - }, - "it-filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", - "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==" - }, - "it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "requires": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "it-last": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.6.tgz", - "integrity": "sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==" - }, - "it-map": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz", - "integrity": "sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==" - }, - "it-peekable": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-1.0.3.tgz", - "integrity": "sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ==" - }, - "it-reader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-3.0.0.tgz", - "integrity": "sha512-NxR40odATeaBmSefn6Xn43DplYvn2KtEKQzn4jrTRuPYXMky5M4e+KQ7aTJh0k0vkytLyeenGO1I1GXlGm4laQ==", - "requires": { - "bl": "^5.0.0" - } - }, - "it-take": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", - "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==" - }, - "it-tar": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/it-tar/-/it-tar-3.0.0.tgz", - "integrity": "sha512-VhD1Hnx4IXDcQgYJnJgltkn+w5F8kiJaB46lqovh+YWfty2JGW7i40QQjWbSvcg1QfaU8is8AVX8xwx/Db9oOg==", - "requires": { - "bl": "^5.0.0", - "buffer": "^6.0.3", - "iso-constants": "^0.1.2", - "it-concat": "^2.0.0", - "it-reader": "^3.0.0", - "p-defer": "^3.0.0" - } - }, - "it-to-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz", - "integrity": "sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==", - "requires": { - "buffer": "^6.0.3", - "fast-fifo": "^1.0.0", - "get-iterator": "^1.0.2", - "p-defer": "^3.0.0", - "p-fifo": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "iter-tools": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/iter-tools/-/iter-tools-7.5.0.tgz", - "integrity": "sha512-L0p/RG3Hwk1urilryDKqU8pQ1t5AaaMc7CHmiwJD/uh63Lv7VyjNng/esstf+Tct1587IpetpcDFdufz8sG+sQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.12.1" - } - }, - "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", - "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", - "dev": true, - "optional": true, - "requires": { - "jsonify": "^0.0.1" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "json-text-sequence": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.3.0.tgz", - "integrity": "sha512-7khKIYPKwXQem4lWXfpIN/FEnhztCeRPSxH4qm3fVlqulwujrRDD54xAwDDn/qVKpFtV550+QAkcWJcufzqQuA==", - "requires": { - "@sovpro/delimited-stream": "^1.1.0" - } - }, - "json-to-ast": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", - "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "dev": true, - "requires": { - "code-error-fragment": "0.0.230", - "grapheme-splitter": "^1.0.4" - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "dev": true, - "optional": true - }, - "jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - } - } - }, - "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "requires": { - "json-buffer": "3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "level": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/level/-/level-6.0.1.tgz", - "integrity": "sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw==", - "dev": true, - "optional": true, - "requires": { - "level-js": "^5.0.0", - "level-packager": "^5.1.0", - "leveldown": "^5.4.0" - } - }, - "level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^5.6.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "optional": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "dev": true, - "optional": true, - "requires": { - "catering": "^2.1.0" - } - }, - "level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "dev": true, - "optional": true, - "requires": { - "errno": "~0.1.1" - } - }, - "level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "dev": true, - "optional": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - } - }, - "level-js": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/level-js/-/level-js-5.0.2.tgz", - "integrity": "sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg==", - "dev": true, - "optional": true, - "requires": { - "abstract-leveldown": "~6.2.3", - "buffer": "^5.5.0", - "inherits": "^2.0.3", - "ltgt": "^2.1.2" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "optional": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true - }, - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "dev": true, - "optional": true, - "requires": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" - } - }, - "level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "dev": true, - "optional": true - }, - "level-write-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/level-write-stream/-/level-write-stream-1.0.0.tgz", - "integrity": "sha512-bBNKOEOMl8msO+uIM9YX/gUO6ckokZ/4pCwTm/lwvs46x6Xs8Zy0sn3Vh37eDqse4mhy4fOMIb/JsSM2nyQFtw==", - "dev": true, - "optional": true, - "requires": { - "end-stream": "~0.1.0" - } - }, - "leveldown": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz", - "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", - "dev": true, - "optional": true, - "requires": { - "abstract-leveldown": "~6.2.1", - "napi-macros": "~2.0.0", - "node-gyp-build": "~4.1.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "optional": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "optional": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "optional": true - }, - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "dev": true, - "optional": true, - "requires": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "dependencies": { - "level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "optional": true, - "requires": { - "xtend": "^4.0.2" - } - } - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true, - "optional": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true, - "optional": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", - "dev": true, - "requires": { - "lower-case": "^1.1.2" - }, - "dependencies": { - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - } - } - }, - "lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", - "dev": true, - "optional": true - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "marked": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.3.tgz", - "integrity": "sha512-slWRdJkbTZ+PjkyJnE30Uid64eHwbwa1Q25INCAYfZlK4o6ylagBy/Le9eWntqJFoFT93ikUKMv47GZ4gTwHkw==", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "memdown": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", - "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", - "dev": true, - "optional": true, - "requires": { - "abstract-leveldown": "~2.7.1", - "functional-red-black-tree": "^1.0.1", - "immediate": "^3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "abstract-leveldown": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", - "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", - "dev": true, - "optional": true, - "requires": { - "xtend": "~4.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - } - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "requires": { - "is-plain-obj": "^2.1.0" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", - "requires": { - "mkdirp": "*" - } - }, - "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "mocha-multi-reporters": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz", - "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "lodash": "^4.17.15" - } - }, - "mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multiaddr": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-9.0.2.tgz", - "integrity": "sha512-YFaEb9t4yXSbaGksSEdg+Kn2U02s7w4wXUgyEMQmPxFJj7CfVHY10WOsScAX/rK6Soa15S1zXYadqH9TtlVreQ==", - "requires": { - "cids": "^1.0.0", - "dns-over-http-resolver": "^1.0.0", - "err-code": "^3.0.1", - "is-ip": "^3.1.0", - "multibase": "^4.0.2", - "uint8arrays": "^2.1.3", - "varint": "^6.0.0" - }, - "dependencies": { - "cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - } - } - }, - "multiaddr-to-uri": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-7.0.0.tgz", - "integrity": "sha512-VbscDpLcbV0m25tJqfnZSfbjVUuNlPa4BbD5l/7me1t0lc3SWI0XAoO5E/PNJF0e1qUlbdq7yjVFEQjUT+9r0g==", - "requires": { - "multiaddr": "^9.0.1" - } - }, - "multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "requires": { - "varint": "^5.0.0" - }, - "dependencies": { - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "multiformats": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" - }, - "multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "requires": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "multihashing-async": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-2.1.4.tgz", - "integrity": "sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg==", - "requires": { - "blakejs": "^1.1.0", - "err-code": "^3.0.0", - "js-sha3": "^0.8.0", - "multihashes": "^4.0.1", - "murmurhash3js-revisited": "^3.0.0", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - } - }, - "uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "requires": { - "multiformats": "^9.4.2" - } - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - } - } - }, - "murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==" - }, - "mylas": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz", - "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", - "dev": true - }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "nano-base32": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz", - "integrity": "sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw==", - "dev": true - }, - "nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true, - "optional": true - }, - "native-abort-controller": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz", - "integrity": "sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==", - "requires": {} - }, - "native-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", - "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", - "requires": {} - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "neodoc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/neodoc/-/neodoc-2.0.2.tgz", - "integrity": "sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==", - "dev": true - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp-build": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", - "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==", - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - } - } - }, - "nofilter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", - "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", - "dev": true - }, - "noop-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/noop-fn/-/noop-fn-1.0.0.tgz", - "integrity": "sha512-pQ8vODlgXt2e7A3mIbFDlizkr46r75V+BJxVAyat8Jl7YmI513gG5cfyRL0FedKraoZ+VAouI1h4/IWpus5pcQ==", - "dev": true, - "optional": true - }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true - }, - "number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "requires": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" - } - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", - "requires": { - "http-https": "^1.0.0" - } - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "original-require": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", - "integrity": "sha512-5vdKMbE58WaE61uVD+PKyh8xdM398UnjPBLotW2sjG5MzHARwta/+NtMBCBA0t2WQblGYBvq5vsiZpWokwno+A==", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "dev": true, - "optional": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" - }, - "p-defer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==" - }, - "p-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", - "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", - "requires": { - "fast-fifo": "^1.0.0", - "p-defer": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-duration": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.2.tgz", - "integrity": "sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==" - }, - "parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true - }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "requires": { - "entities": "^4.4.0" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dev": true, - "requires": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", - "dev": true, - "requires": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" - }, - "dependencies": { - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", - "dev": true, - "requires": { - "upper-case": "^1.1.1" - } - } - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true - }, - "path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } - } - }, - "plimit-lit": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.5.0.tgz", - "integrity": "sha512-Eb/MqCb1Iv/ok4m1FqIXqvUKPISufcjZ605hl3KM/n8GaX8zfhtgdLwZU3vKjuHGh2O9Rjog/bHTq8ofIShdng==", - "dev": true, - "requires": { - "queue-lit": "^1.5.0" - } - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "optional": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true - }, - "pouchdb": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/pouchdb/-/pouchdb-7.3.0.tgz", - "integrity": "sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw==", - "dev": true, - "optional": true, - "requires": { - "abort-controller": "3.0.0", - "argsarray": "0.0.1", - "buffer-from": "1.1.2", - "clone-buffer": "1.0.0", - "double-ended-queue": "2.1.0-0", - "fetch-cookie": "0.11.0", - "immediate": "3.3.0", - "inherits": "2.0.4", - "level": "6.0.1", - "level-codec": "9.0.2", - "level-write-stream": "1.0.0", - "leveldown": "5.6.0", - "levelup": "4.4.0", - "ltgt": "2.2.1", - "node-fetch": "2.6.7", - "readable-stream": "1.1.14", - "spark-md5": "3.0.2", - "through2": "3.0.2", - "uuid": "8.3.2", - "vuvuzela": "1.0.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "optional": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true - } - } - }, - "pouchdb-abstract-mapreduce": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz", - "integrity": "sha512-0zKXVFBvrfc1KnN0ggrB762JDmZnUpePHywo9Bq3Jy+L1FnoG7fXM5luFfvv5/T0gEw+ZTIwoocZECMnESBI9w==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-binary-utils": "7.3.1", - "pouchdb-collate": "7.3.1", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-fetch": "7.3.1", - "pouchdb-mapreduce-utils": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "pouchdb-adapter-leveldb-core": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.3.1.tgz", - "integrity": "sha512-mxShHlqLMPz2gChrgtA9okV1ogFmQrRAoM/O4EN0CrQWPLXqYtpL1f7sI2asIvFe7SmpnvbLx7kkZyFmLTfwjA==", - "dev": true, - "optional": true, - "requires": { - "argsarray": "0.0.1", - "buffer-from": "1.1.2", - "double-ended-queue": "2.1.0-0", - "levelup": "4.4.0", - "pouchdb-adapter-utils": "7.3.1", - "pouchdb-binary-utils": "7.3.1", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-json": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-merge": "7.3.1", - "pouchdb-utils": "7.3.1", - "sublevel-pouchdb": "7.3.1", - "through2": "3.0.2" - } - }, - "pouchdb-adapter-memory": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.3.1.tgz", - "integrity": "sha512-iHdWGJAHONqQv0we3Oi1MYen69ZS8McLW9wUyaAYcWTJnAIIAr2ZM0/TeTDVSHfMUwYqEYk7X8jRtJZEMwLnwg==", - "dev": true, - "optional": true, - "requires": { - "memdown": "1.4.1", - "pouchdb-adapter-leveldb-core": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "pouchdb-adapter-node-websql": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-node-websql/-/pouchdb-adapter-node-websql-7.0.0.tgz", - "integrity": "sha512-fNaOMO8bvMrRTSfmH4RSLSpgnKahRcCA7Z0jg732PwRbGvvMdGbreZwvKPPD1fg2tm2ZwwiXWK2G3+oXyoqZYw==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-adapter-websql-core": "7.0.0", - "pouchdb-utils": "7.0.0", - "websql": "1.0.0" - }, - "dependencies": { - "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "dev": true, - "optional": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "optional": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "optional": true - }, - "pouchdb-binary-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.0.0.tgz", - "integrity": "sha512-yUktdOPIPvOVouCjJN3uop+bCcpdPwePrLm9eUAZNgEYnUFu0njdx7Q0WRsZ7UJ6l75HinL5ZHk4bnvEt86FLw==", - "dev": true, - "optional": true, - "requires": { - "buffer-from": "1.1.0" - } - }, - "pouchdb-collections": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.0.0.tgz", - "integrity": "sha512-DaoUr/vU24Q3gM6ghj0va9j/oBanPwkbhkvnqSyC3Dm5dgf5pculNxueLF9PKMo3ycApoWzHMh6N2N8KJbDU2Q==", - "dev": true, - "optional": true - }, - "pouchdb-errors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.0.0.tgz", - "integrity": "sha512-dTusY8nnTw4HIztCrNl7AoGgwvS1bVf/3/97hDaGc4ytn72V9/4dK8kTqlimi3UpaurohYRnqac0SGXYP8vgXA==", - "dev": true, - "optional": true, - "requires": { - "inherits": "2.0.3" - } - }, - "pouchdb-md5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.0.0.tgz", - "integrity": "sha512-yaSJKhLA3QlgloKUQeb2hLdT3KmUmPfoYdryfwHZuPTpXIRKTnMQTR9qCIRUszc0ruBpDe53DRslCgNUhAyTNQ==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-binary-utils": "7.0.0", - "spark-md5": "3.0.0" - } - }, - "pouchdb-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.0.0.tgz", - "integrity": "sha512-1bnoX1KdZYHv9wicDIFdO0PLiVIMzNDUBUZ/yOJZ+6LW6niQCB8aCv09ZztmKfSQcU5nnN3fe656tScBgP6dOQ==", - "dev": true, - "optional": true, - "requires": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.0.6", - "inherits": "2.0.3", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "uuid": "3.2.1" - } - }, - "spark-md5": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.0.tgz", - "integrity": "sha512-BpPFB0Oh83mi+6DRcFwxPx96f3OL8Tkq3hdvaHuXaQUsy5F3saI3zIPNQ/UsTQgyAXIHnML1waeCe1WoCPXbpQ==", - "dev": true, - "optional": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true, - "optional": true - } - } - }, - "pouchdb-adapter-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.3.1.tgz", - "integrity": "sha512-uKLG6dClwTs/sLIJ4WkLAi9wlnDBpOnfyhpeAgOjlOGN/XLz5nKHrA4UJRnURDyc+uv79S9r/Unc4hVpmbSPUw==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-binary-utils": "7.3.1", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-merge": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "pouchdb-adapter-websql-core": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-websql-core/-/pouchdb-adapter-websql-core-7.0.0.tgz", - "integrity": "sha512-NyMaH0bl20SdJdOCzd+fwXo8JZ15a48/MAwMcIbXzsRHE4DjFNlRcWAcjUP6uN4Ezc+Gx+r2tkBBMf71mIz1Aw==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-adapter-utils": "7.0.0", - "pouchdb-binary-utils": "7.0.0", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-json": "7.0.0", - "pouchdb-merge": "7.0.0", - "pouchdb-utils": "7.0.0" - }, - "dependencies": { - "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "dev": true, - "optional": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "optional": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "optional": true - }, - "pouchdb-adapter-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.0.0.tgz", - "integrity": "sha512-UWKPC6jkz6mHUzZefrU7P5X8ZGvBC8LSNZ7BIp0hWvJE6c20cnpDwedTVDpZORcCbVJpDmFOHBYnOqEIblPtbA==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-binary-utils": "7.0.0", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "pouchdb-merge": "7.0.0", - "pouchdb-utils": "7.0.0" - } - }, - "pouchdb-binary-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.0.0.tgz", - "integrity": "sha512-yUktdOPIPvOVouCjJN3uop+bCcpdPwePrLm9eUAZNgEYnUFu0njdx7Q0WRsZ7UJ6l75HinL5ZHk4bnvEt86FLw==", - "dev": true, - "optional": true, - "requires": { - "buffer-from": "1.1.0" - } - }, - "pouchdb-collections": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.0.0.tgz", - "integrity": "sha512-DaoUr/vU24Q3gM6ghj0va9j/oBanPwkbhkvnqSyC3Dm5dgf5pculNxueLF9PKMo3ycApoWzHMh6N2N8KJbDU2Q==", - "dev": true, - "optional": true - }, - "pouchdb-errors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.0.0.tgz", - "integrity": "sha512-dTusY8nnTw4HIztCrNl7AoGgwvS1bVf/3/97hDaGc4ytn72V9/4dK8kTqlimi3UpaurohYRnqac0SGXYP8vgXA==", - "dev": true, - "optional": true, - "requires": { - "inherits": "2.0.3" - } - }, - "pouchdb-json": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-7.0.0.tgz", - "integrity": "sha512-w0bNRu/7VmmCrFWMYAm62n30wvJJUT2SokyzeTyj3hRohj4GFwTRg1mSZ+iAmxgRKOFE8nzZstLG/WAB4Ymjew==", - "dev": true, - "optional": true, - "requires": { - "vuvuzela": "1.0.3" - } - }, - "pouchdb-md5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.0.0.tgz", - "integrity": "sha512-yaSJKhLA3QlgloKUQeb2hLdT3KmUmPfoYdryfwHZuPTpXIRKTnMQTR9qCIRUszc0ruBpDe53DRslCgNUhAyTNQ==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-binary-utils": "7.0.0", - "spark-md5": "3.0.0" - } - }, - "pouchdb-merge": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.0.0.tgz", - "integrity": "sha512-tci5u6NpznQhGcPv4ho1h0miky9rs+ds/T9zQ9meQeDZbUojXNaX1Jxsb0uYEQQ+HMqdcQs3Akdl0/u0mgwPGg==", - "dev": true, - "optional": true - }, - "pouchdb-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.0.0.tgz", - "integrity": "sha512-1bnoX1KdZYHv9wicDIFdO0PLiVIMzNDUBUZ/yOJZ+6LW6niQCB8aCv09ZztmKfSQcU5nnN3fe656tScBgP6dOQ==", - "dev": true, - "optional": true, - "requires": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.0.6", - "inherits": "2.0.3", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "uuid": "3.2.1" - } - }, - "spark-md5": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.0.tgz", - "integrity": "sha512-BpPFB0Oh83mi+6DRcFwxPx96f3OL8Tkq3hdvaHuXaQUsy5F3saI3zIPNQ/UsTQgyAXIHnML1waeCe1WoCPXbpQ==", - "dev": true, - "optional": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true, - "optional": true - } - } - }, - "pouchdb-binary-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz", - "integrity": "sha512-crZJNfAEOnUoRk977Qtmk4cxEv6sNKllQ6vDDKgQrQLFjMUXma35EHzNyIJr1s76J77Q4sqKQAmxz9Y40yHGtw==", - "dev": true, - "optional": true, - "requires": { - "buffer-from": "1.1.2" - } - }, - "pouchdb-collate": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.3.1.tgz", - "integrity": "sha512-o4gyGqDMLMSNzf6EDTr3eHaH/JRMoqRhdc+eV+oA8u00nTBtr9wD+jypVe2LbgKLJ4NWqx2qVkXiTiQdUFtsLQ==", - "dev": true, - "optional": true - }, - "pouchdb-collections": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.3.1.tgz", - "integrity": "sha512-yUyDqR+OJmtwgExOSJegpBJXDLAEC84TWnbAYycyh+DZoA51Yw0+XVQF5Vh8Ii90/Ut2xo88fmrmp0t6kqom8w==", - "dev": true, - "optional": true - }, - "pouchdb-debug": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/pouchdb-debug/-/pouchdb-debug-7.2.1.tgz", - "integrity": "sha512-eP3ht/AKavLF2RjTzBM6S9gaI2/apcW6xvaKRQhEdOfiANqerFuksFqHCal3aikVQuDO+cB/cw+a4RyJn/glBw==", - "dev": true, - "optional": true, - "requires": { - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true - } - } - }, - "pouchdb-errors": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.3.1.tgz", - "integrity": "sha512-Zktz4gnXEUcZcty8FmyvtYUYsHskoST05m6H5/E2gg/0mCfEXq/XeyyLkZHaZmqD0ZPS9yNmASB1VaFWEKEaDw==", - "dev": true, - "optional": true, - "requires": { - "inherits": "2.0.4" - } - }, - "pouchdb-fetch": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.3.1.tgz", - "integrity": "sha512-205xAtvdHRPQ4fp1h9+RmT9oQabo9gafuPmWsS9aEl3ER54WbY8Vaj1JHZGbU4KtMTYvW7H5088zLS7Nrusuag==", - "dev": true, - "optional": true, - "requires": { - "abort-controller": "3.0.0", - "fetch-cookie": "0.11.0", - "node-fetch": "2.6.7" - } - }, - "pouchdb-find": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-7.3.1.tgz", - "integrity": "sha512-AeqUfAVY1c7IFaY36BRT0vIz9r4VTKq/YOWTmiqndOZUQ/pDGxyO2fNFal6NN3PyYww0JijlD377cPvhnrhJVA==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-abstract-mapreduce": "7.3.1", - "pouchdb-collate": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-fetch": "7.3.1", - "pouchdb-md5": "7.3.1", - "pouchdb-selector-core": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "pouchdb-json": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-7.3.1.tgz", - "integrity": "sha512-AyOKsmc85/GtHjMZyEacqzja8qLVfycS1hh1oskR+Bm5PIITX52Fb8zyi0hEetV6VC0yuGbn0RqiLjJxQePeqQ==", - "dev": true, - "optional": true, - "requires": { - "vuvuzela": "1.0.3" - } - }, - "pouchdb-mapreduce-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.1.tgz", - "integrity": "sha512-oUMcq82+4pTGQ6dtrhgORHOVHZSr6w/5tFIUGlv7RABIDvJarL4snMawADjlpiEwPdiQ/ESG8Fqt8cxqvqsIgg==", - "dev": true, - "optional": true, - "requires": { - "argsarray": "0.0.1", - "inherits": "2.0.4", - "pouchdb-collections": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "pouchdb-md5": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.3.1.tgz", - "integrity": "sha512-aDV8ui/mprnL3xmt0gT/81DFtTtJiKyn+OxIAbwKPMfz/rDFdPYvF0BmDC9QxMMzGfkV+JJUjU6at0PPs2mRLg==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-binary-utils": "7.3.1", - "spark-md5": "3.0.2" - } - }, - "pouchdb-merge": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.3.1.tgz", - "integrity": "sha512-FeK3r35mKimokf2PQ2tUI523QWyZ4lYZ0Yd75FfSch/SPY6wIokz5XBZZ6PHdu5aOJsEKzoLUxr8CpSg9DhcAw==", - "dev": true, - "optional": true - }, - "pouchdb-selector-core": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.3.1.tgz", - "integrity": "sha512-HBX+nNGXcaL9z0uNpwSMRq2GNZd3EZXW+fe9rJHS0hvJohjZL7aRJLoaXfEdHPRTNW+CpjM3Rny60eGekQdI/w==", - "dev": true, - "optional": true, - "requires": { - "pouchdb-collate": "7.3.1", - "pouchdb-utils": "7.3.1" - } - }, - "pouchdb-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.3.1.tgz", - "integrity": "sha512-R3hHBo1zTdTu/NFs3iqkcaQAPwhIH0gMIdfVKd5lbDYlmP26rCG5pdS+v7NuoSSFLJ4xxnaGV+Gjf4duYsJ8wQ==", - "dev": true, - "optional": true, - "requires": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.3.0", - "inherits": "2.0.4", - "pouchdb-collections": "7.3.1", - "pouchdb-errors": "7.3.1", - "pouchdb-md5": "7.3.1", - "uuid": "8.3.2" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true - } - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true - }, - "prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", - "dev": true, - "optional": true - }, - "prettier-plugin-solidity": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0.tgz", - "integrity": "sha512-gRJCeZ7imbWtNYN2SudjJoPmka5r6jcd2cSTV6FC3pVCtY6LFZbeQQjpKufUEp88hXBAAnkOTOh7TA5xwj9M3A==", - "dev": true, - "optional": true, - "requires": { - "@solidity-parser/parser": "^0.14.5", - "emoji-regex": "^10.2.1", - "escape-string-regexp": "^4.0.0", - "semver": "^7.3.8", - "solidity-comments-extractor": "^0.0.7", - "string-width": "^4.2.3" - }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "optional": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true - }, - "protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==" - }, - "pure-rand": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz", - "integrity": "sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "optional": true - }, - "queue-lit": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.0.tgz", - "integrity": "sha512-IslToJ4eiCEE9xwMzq3viOO5nH8sUWUCwoElrhNMozzr9IIt2qqvB4I+uHu/zJTQVqc9R5DFwok4ijNK1pU3fA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "optional": true - } - } - }, - "react-native-fetch-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz", - "integrity": "sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==", - "requires": { - "p-defer": "^3.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", - "requires": { - "ms": "^2.1.1" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "optional": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "dev": true - }, - "responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "requires": { - "lowercase-keys": "^2.0.0" - }, - "dependencies": { - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retimer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-2.0.0.tgz", - "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==" - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "optional": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "ripemd160-min": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", - "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", - "dev": true - }, - "rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "requires": { - "bn.js": "^5.2.0" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - } - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "requires": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "sha3": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", - "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", - "dev": true, - "requires": { - "buffer": "6.0.3" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shiki": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.10.1.tgz", - "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", - "dev": true, - "requires": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", - "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", - "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - }, - "dependencies": { - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "requires": { - "mimic-response": "^1.0.0" - } - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "solc": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.17.tgz", - "integrity": "sha512-Dtidk2XtTTmkB3IKdyeg6wLYopJnBVxdoykN8oP8VY3PQjN16BScYoUJTXFm2OP7P0hXNAqWiJNmmfuELtLf8g==", - "dev": true, - "requires": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "solidity-comments-extractor": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", - "integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "spark-md5": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", - "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==", - "dev": true, - "optional": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sqlite3": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz", - "integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.11.0" - } - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stream-to-it": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", - "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", - "requires": { - "get-iterator": "^1.0.2" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - } - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "requires": { - "is-hex-prefixed": "1.0.0" - } - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "sublevel-pouchdb": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sublevel-pouchdb/-/sublevel-pouchdb-7.3.1.tgz", - "integrity": "sha512-n+4fK72F/ORdqPwoGgMGYeOrW2HaPpW9o9k80bT1B3Cim5BSvkKkr9WbWOWynni/GHkbCEdvLVFJL1ktosAdhQ==", - "dev": true, - "optional": true, - "requires": { - "inherits": "2.0.4", - "level-codec": "9.0.2", - "ltgt": "2.2.1", - "readable-stream": "1.1.14" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true, - "optional": true - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - }, - "dependencies": { - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - } - } - }, - "swarm-js": { - "version": "0.1.42", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", - "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", - "requires": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^11.8.5", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - }, - "dependencies": { - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, - "tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "requires": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "testrpc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", - "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "optional": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==" - }, - "timeout-abort-controller": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz", - "integrity": "sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==", - "requires": { - "abort-controller": "^3.0.0", - "retimer": "^2.0.0" - } - }, - "tiny-queue": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-queue/-/tiny-queue-0.2.1.tgz", - "integrity": "sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A==", - "dev": true, - "optional": true - }, - "title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - }, - "dependencies": { - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - } - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "optional": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "optional": true - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "optional": true - } - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "traverse-chain": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", - "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==", - "dev": true - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } - } - }, - "tsc-alias": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.0.tgz", - "integrity": "sha512-+8PJYBw63bkOwKwqjBRmM/jRdePg6ucLB+Rrr+MZAiTfwvk8Itg8FIn9CWE3voJUOvpFnwDjidHyaRRUyzORYA==", - "dev": true, - "requires": { - "chokidar": "^3.5.3", - "commander": "^9.0.0", - "globby": "^11.0.4", - "mylas": "^2.1.9", - "normalize-path": "^3.0.0", - "plimit-lit": "^1.2.6" - }, - "dependencies": { - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true - } - } - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "tscpaths": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/tscpaths/-/tscpaths-0.0.9.tgz", - "integrity": "sha512-tz4qimSJTCjYtHVsoY7pvxLcxhmhgmwzm7fyMEiL3/kPFFVyUuZOwuwcWwjkAsIrSUKJK22A7fNuJUwxzQ+H+w==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "globby": "^9.2.0" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typedoc": { - "version": "0.22.18", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.18.tgz", - "integrity": "sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==", - "dev": true, - "requires": { - "glob": "^8.0.3", - "lunr": "^2.3.9", - "marked": "^4.0.16", - "minimatch": "^5.1.0", - "shiki": "^0.10.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", - "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "typescript": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", - "integrity": "sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==", - "dev": true - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true - }, - "uint8arrays": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", - "integrity": "sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==", - "requires": { - "multiformats": "^9.4.2" - } - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true - } - } - }, - "upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "dev": true - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "optional": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "requires": { - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" - } - } - }, - "utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", - "dev": true, - "optional": true - }, - "varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, - "vuvuzela": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz", - "integrity": "sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ==", - "dev": true, - "optional": true - }, - "web3": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz", - "integrity": "sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw==", - "requires": { - "web3-bzz": "1.8.2", - "web3-core": "1.8.2", - "web3-eth": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-shh": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-bzz": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz", - "integrity": "sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w==", - "requires": { - "@types/node": "^12.12.6", - "got": "12.1.0", - "swarm-js": "^0.1.40" - }, - "dependencies": { - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - } - } - }, - "web3-core": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz", - "integrity": "sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ==", - "requires": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-requestmanager": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-core-helpers": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz", - "integrity": "sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg==", - "dev": true, - "requires": { - "web3-eth-iban": "1.7.4", - "web3-utils": "1.7.4" - }, - "dependencies": { - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "web3-core-method": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz", - "integrity": "sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA==", - "requires": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-core-promievent": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz", - "integrity": "sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-core-requestmanager": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz", - "integrity": "sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g==", - "requires": { - "util": "^0.12.5", - "web3-core-helpers": "1.8.2", - "web3-providers-http": "1.8.2", - "web3-providers-ipc": "1.8.2", - "web3-providers-ws": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-core-subscriptions": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz", - "integrity": "sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw==", - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-eth": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz", - "integrity": "sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ==", - "requires": { - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-accounts": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-eth-ens": "1.8.2", - "web3-eth-iban": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", - "requires": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-eth-abi": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz", - "integrity": "sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.7.4" - }, - "dependencies": { - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "web3-eth-accounts": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz", - "integrity": "sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA==", - "requires": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.1.5", - "scrypt-js": "^3.0.1", - "uuid": "^9.0.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - } - } - } - } - }, - "web3-eth-contract": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz", - "integrity": "sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA==", - "requires": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", - "requires": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-eth-ens": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz", - "integrity": "sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw==", - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", - "requires": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-eth-iban": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz", - "integrity": "sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.7.4" - }, - "dependencies": { - "web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "web3-eth-personal": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz", - "integrity": "sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw==", - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-net": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz", - "integrity": "sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag==", - "requires": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-providers-http": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz", - "integrity": "sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ==", - "requires": { - "abortcontroller-polyfill": "^1.7.3", - "cross-fetch": "^3.1.4", - "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-providers-ipc": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz", - "integrity": "sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w==", - "requires": { - "oboe": "2.1.5", - "web3-core-helpers": "1.8.2" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-providers-ws": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz", - "integrity": "sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA==", - "requires": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2", - "websocket": "^1.0.32" - }, - "dependencies": { - "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", - "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" - } - }, - "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", - "requires": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - } - } - } - }, - "web3-shh": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz", - "integrity": "sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw==", - "requires": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-net": "1.8.2" - } - }, - "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "websql": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/websql/-/websql-1.0.0.tgz", - "integrity": "sha512-7iZ+u28Ljw5hCnMiq0BCOeSYf0vCFQe/ORY0HgscTiKjQed8WqugpBUggJ2NTnB9fahn1kEnPRX2jf8Px5PhJw==", - "dev": true, - "optional": true, - "requires": { - "argsarray": "^0.0.1", - "immediate": "^3.2.2", - "noop-fn": "^1.0.0", - "sqlite3": "^4.0.0", - "tiny-queue": "^0.2.1" - } - }, - "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "optional": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-stream": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/write-stream/-/write-stream-0.4.3.tgz", - "integrity": "sha512-IJrvkhbAnj89W/GAVdVgbnPiVw5Ntg/B4tc/MUCIEwj/g6JIww1DWJyB/yBMT3yw2/TkT6IUZ0+IYef3flEw8A==", - "dev": true, - "optional": true, - "requires": { - "readable-stream": "~0.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-0.0.4.tgz", - "integrity": "sha512-azrivNydKRYt7zwLV5wWUK7YzKTWs3q87xSmY6DlHapPrCvaT6ZrukvM5erV+yCSSPmZT8zkSdttOHQpWWm9zw==", - "dev": true, - "optional": true - } - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "requires": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "requires": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "requires": { - "xhr-request": "^1.1.0" - } - }, - "xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "dev": true, - "requires": { - "cookiejar": "^2.1.1" - } - }, - "xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", - "dev": true - }, - "xss": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", - "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", - "dev": true, - "optional": true, - "requires": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index 1d36517a..539264f3 100755 --- a/package.json +++ b/package.json @@ -1,48 +1,47 @@ { "name": "@taikai/dappkit", - "version": "2.3.4", + "version": "2.4.0", "description": "Web3 Decentralized Application Kit", "main": "dist/src/index.js", "module": "dist/src/index.js", "repository": { "type": "git", - "url": "git+https://github.com/taikai/dappkit.git" + "url": "git+https://github.com/layerx-labs/dappkit.git" }, "files": [ "dist", "README.md" ], "scripts": { - "compile": "node tools/compile.mjs", - "postcompile": "node tools/contract-json-cleaner.mjs build/contracts/", - "prebuild": "npm run compile", + "tsc": "tsc", + "tscpaths": "tscpaths", + "solhint": "solhint", + "clean-contracts": "node tools/contract-json-cleaner.mjs artifacts/contracts/", + "generate-typings": "node tools/generate-abi-typings.mjs", + "list-contract-size": "node tools/contract-size.mjs artifacts/contracts/", + "fix-paths": "tscpaths -p ./tsconfig.json -s ./ -o ./dist", "prepublishOnly": "npm run build", + "compile-contracts": "npx hardhat compile && npm run clean-contracts && npm run list-contract-size", + "compile-ts": "tsc -p ./tsconfig.json && npm run fix-paths", + "build": "npm run compile-contracts && npm run generate-typings && npm run compile-ts ", + "docs": "typedoc", + "hardhat:start": "npx hardhat node", "mocha-mug": "mocha --bail --timeout 60000 --exit --require ts-node/register --require tsconfig-paths/register", "test": "npm run mocha-mug -- 'test/**/*.spec.{ts,tsx}' --pretty", - "build": "tsc -p ./tsconfig.json", - "postbuild": "tscpaths -p ./tsconfig.json -s ./ -o ./dist", - "docs": "typedoc", - "ganache:start": "ganache -p 8545 -q --account_keys_path keys.json ", - "test-ci": "npm run ganache:start >/dev/null & npm run test", + "test-ci": "npm run hardhat:start >/dev/null & npm run test", "eslint": "eslint --ignore-path .eslintignore --ext .ts ./src", - "lint": "npm run eslint -- --quiet", + "lint": "npm run eslint", "lint-fix": "npm run eslint -- --quiet --fix", - "tsc": "tsc", - "tscpaths": "tscpaths", "dk-transpile": "dlt -j dk-config.json" }, "dependencies": { - "bignumber.js": "^9.0.2", + "bignumber.js": "^9.1.1", "date-fns": "^2.27.0", - "ipfs-http-client": "^50.1.2", - "web3": "^1.8.2", - "web3-eth": "^1.8.2", - "web3-utils": "^1.8.2" + "web3": "4.10.0" }, "devDependencies": { - "@openzeppelin/contracts": "^3.4.2", + "@openzeppelin/contracts": "5.0.2", "@taikai/dappkit-launchpad": "^0.0.19", - "@truffle/workflow-compile": "4.0.21", "@types/chai": "^4.3.0", "@types/chai-like": "^1.1.1", "@types/chai-things": "^0.0.35", @@ -50,24 +49,22 @@ "@types/yargs": "^17.0.7", "@typescript-eslint/eslint-plugin": "^5.11.0", "@typescript-eslint/parser": "^5.11.0", - "@uniswap/v3-core": "^1.0.0", - "@uniswap/v3-periphery": "^1.1.1", "chai": "^4.3.4", "chai-like": "^1.1.1", "chai-things": "^0.2.0", "dotenv": "^8.2.0", "eslint": "^8.8.0", "find": "^0.3.0", - "ganache": "^7.0.0-beta.2", - "ganache-time-traveler": "^1.0.5", - "mocha": "^9.1.3", + "hardhat": "^2.17.1", + "mocha": "10.7.0", "mocha-multi-reporters": "^1.5.1", + "solhint": "^5.0.2", "ts-node": "^10.4.0", "tsc-alias": "^1.5.0", "tsconfig-paths": "^3.12.0", "tscpaths": "^0.0.9", "typedoc": "^0.22.10", - "typescript": "4.5.3" + "typescript": "4.7.4" }, "author": "Mosh Mage (https://moshmage.gitlab.io)", "contributors": [ @@ -86,15 +83,11 @@ }, "types": "./dist/src/index.d.ts", "bugs": { - "url": "https://github.com/taikai/dappkit/issues" + "url": "https://github.com/layerx-labs/dappkit/issues" }, - "homepage": "https://github.com/taikai/dappkit#readme", + "homepage": "https://dappkit.dev", "directories": { "doc": "docs", "test": "test" - }, - "overrides": { - "@truffle/events": "0.1.6", - "@truffle/config": "1.3.29" } } diff --git a/src/base/governed.ts b/src/base/governed.ts index d23c79f7..e786a085 100644 --- a/src/base/governed.ts +++ b/src/base/governed.ts @@ -1,27 +1,31 @@ -import {UseModel} from '@base/use-model'; -import {GovernedMethods} from '@methods/governed'; -import {PastEventOptions} from 'web3-eth-contract'; -import {XEvents} from '@events/x-events'; -import * as Events from '@events/governed-events'; +import {ContractEventOptions} from 'web3-eth-contract' +import artifact from '@interfaces/generated/abi/Governed'; +import {Web3Connection} from "@base/web3-connection"; +import {Web3ConnectionOptions} from "@interfaces/web3-connection-options"; +import {Model} from "@base/model"; + +export class Governed extends Model { + constructor(web3Connection: Web3Connection | Web3ConnectionOptions, contractAddress?: string) { + super(web3Connection, artifact.abi, contractAddress); + } -export class Governed extends UseModel { async _governor() { - return this.model.callTx(this.model.contract.methods._governor()); + return this.callTx(this.contract.methods._governor()); } async _proposedGovernor() { - return this.model.callTx(this.model.contract.methods._proposedGovernor()); + return this.callTx(this.contract.methods._proposedGovernor()); } async proposeGovernor(proposedGovernor: string) { - return this.model.sendTx(this.model.contract.methods.proposeGovernor(proposedGovernor)); + return this.sendTx(this.contract.methods.proposeGovernor(proposedGovernor)); } async claimGovernor() { - return this.model.sendTx(this.model.contract.methods.claimGovernor()); + return this.sendTx(this.contract.methods.claimGovernor()); } - async getGovernorTransferredEvents(filter: PastEventOptions): Promise[]> { - return this.model.contract.self.getPastEvents(`GovernorTransferred`, filter) + async getGovernorTransferredEvents(filter: ContractEventOptions) { + return this.contract.self.events.GovernorTransferred(filter) } } diff --git a/src/base/ipfs-wrapper.ts b/src/base/ipfs-wrapper.ts deleted file mode 100644 index fedfbe5a..00000000 --- a/src/base/ipfs-wrapper.ts +++ /dev/null @@ -1,56 +0,0 @@ -import {IPFSOptions} from '@interfaces/ipfs-options'; -import {create} from 'ipfs-http-client'; -import {IPFS} from 'ipfs-core-types'; -import {ImportCandidate, IPFSPath} from 'ipfs-core-types/src/utils'; -import {GetOptions} from 'ipfs-core-types/src/root'; - -/** - * Thin layer around ipfs-http-client - * @usage - * ``` - * const wrapper = new IPFSWrapper(options); - * const {cid} await wrapper.IPFS.add("hello world"); - * const echo = await wrapper.IPFS.get(cid); - * assert(echo === "hello world") - * ``` - */ -export class IPFSWrapper { - - constructor(readonly options: IPFSOptions) { - if (this.options.auto) { - delete this.options.auto; // delete auto because we don't want to feed it into the ipfs as it's unknown - this.create() - } - } - - private _IPFS!: IPFS; - get IPFS() { return this._IPFS; } - - create(options?: IPFSOptions) { - this._IPFS = create(options || this.options) - } - - add(data: ImportCandidate, options?: GetOptions) { - return this._IPFS.add(data, options); - } - - /* eslint-disable complexity */ - async get(cid: IPFSPath, options?: GetOptions) { - - for await (const node of this._IPFS.get(cid, options)) - if (node.type === "file" && node.content) { - const content = []; - - for await (const chunk of node.content) { - if (chunk) { - content.push(chunk); - } - } - - return content.join(''); - - } else return node; - } - /* eslint-enable complexity */ - -} diff --git a/src/base/model.ts b/src/base/model.ts index 02bce87d..6e3c2c00 100644 --- a/src/base/model.ts +++ b/src/base/model.ts @@ -1,20 +1,20 @@ -import {Web3Connection} from './web3-connection'; -import {AbiItem} from 'web3-utils'; +import {ContractAbi} from 'web3'; +import {Web3BaseWalletAccount} from "web3/lib/types"; +import {NonPayableMethodObject, PayableMethodObject} from "web3-eth-contract/src/types"; + import {Errors} from '@interfaces/error-enum'; -import Web3 from 'web3'; -import {Account} from 'web3-core'; import {TransactionReceipt} from '@interfaces/web3-core'; -import {Web3Contract} from './web3-contract'; +import {Web3Contract, Web3ContractOptions} from './web3-contract'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {ContractSendMethod, DeployOptions} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; -import {transactionHandler} from '@utils/transaction-handler'; -import {noop} from '@utils/noop'; +import DeployOptions from "@interfaces/contract/deploy-options"; + +import {Web3Connection} from './web3-connection'; -export class Model { - protected _contract!: Web3Contract; +export class Model { + protected _contract!: Web3Contract; protected _contractAddress?: string; private readonly web3Connection!: Web3Connection; + readonly contractOptions: Web3ContractOptions = {auto: true, confirmations: 1} /** * Returns the {@link Web3Contract} class representing this contract @@ -29,8 +29,9 @@ export class Model { /* eslint-disable complexity */ constructor(web3Connection: Web3Connection | Web3ConnectionOptions, - readonly abi: AbiItem[], - contractAddress?: string) { + readonly abi: Abi, + contractAddress?: string, + contractOptions?: Web3ContractOptions) { if (!abi || !abi.length) throw new Error(Errors.MissingAbiInterfaceFromArguments); @@ -41,8 +42,16 @@ export class Model { this.web3Connection = web3Connection; else this.web3Connection = new Web3Connection(web3Connection); + + this.contractOptions = { + confirmations: this.web3Connection.options.confirmations || 1, + auto: true, + debug: this.web3Connection.options.debug, + ...contractOptions, + } as never; + if (this.web3Connection.started) - this.loadAbi(); // cannot call start because start is async, has to be called by user-land + this.loadAbi(); // no need to call .start() be cause .start calls web3connection.start first } /* eslint-enable complexity */ @@ -52,28 +61,16 @@ export class Model { */ get connection(): Web3Connection { return this.web3Connection; } - /** - * Returns the Web3 class assigned to this connection - */ - get web3(): Web3 { return this.connection.Web3; } - - /** - * Returns the Account associated with this connection - */ - get account(): Account { return this.connection.Account; } /** * Initialize the underlying web3js contract */ loadAbi() { - this._contract = new Web3Contract(this.web3, this.abi, this._contractAddress); + this._contract = new Web3Contract(this.connection.Web3, this.abi, this._contractAddress, this.contractOptions); } /** - * Deprecated - async capabilities on this function will affect autoStart: true option, use `start()` instead - * if you need async abilities. - * - * ~~Preferred~~ Alternative way of initializing and loading a contract, ~~use this function to customize contract loading, + * Alternative way of initializing and loading a contract, ~~use this function to customize contract loading, * initializing any other dependencies the contract might have when extending from Model~~ * @throws Errors.MissingContractAddress * @deprecated @@ -105,24 +102,26 @@ export class Model { * @void */ async start() { - await this.web3Connection.start(); + this.web3Connection.start(); this.loadAbi(); } /** * Return a property value from the contract + * @see */ - async callTx(method: ContractCallMethod) { - return method.call(); + // eslint-disable-next-line class-methods-use-this + async callTx(method: PayableMethodObject|NonPayableMethodObject) { + return method.call(); } /** * Interact with, or change a value of, a property on the contract */ - async sendTx(method: ContractSendMethod, - value?: any): Promise { - if (this.account) - return this.contract.sendSignedTx(this.account, + async sendTx(method: PayableMethodObject|NonPayableMethodObject, + value?: never): Promise> { + if (this.connection.Account) + return this.contract.sendSignedTx(this.connection.Account, method.encodeABI(), value, await this.contract.txOptions(method, @@ -130,43 +129,17 @@ export class Model { await this.connection.getAddress()), this.connection.options); - else return this.sendUnsignedTx(method, value, this.connection.options); - } - - /* eslint-disable no-async-promise-executor */ - /** - * Send unsigned transaction - */ - async sendUnsignedTx(method: ContractSendMethod, - value?: any, { - debug, - customTransactionHandler: cb - }: Partial = {}): Promise { - const from = (await this.web3.eth.givenProvider.request({method: 'eth_requestAccounts'}))?.[0]; - - return new Promise(async (resolve, reject) => { - try { - const options = await this.contract.txOptions(method, value, from); - const sendMethod = () => method.send({from, value, ...options}, noop); - - if (cb) - cb(sendMethod(), resolve, reject, debug) - else - transactionHandler(sendMethod(), resolve, reject, debug) - } catch (e) { - if (debug) - console.error(e); - reject(e); - } - }).then(receipt => this.contract.parseReceiptLogs(receipt)); + else return this.contract.sendUnsignedTx(method, value, this.connection.options); } - /* eslint-enable no-async-promise-executor */ /** * Deploy the loaded abi contract */ - async deploy(deployOptions: DeployOptions, account?: Account) { - return this.contract.deploy(this.abi, deployOptions, account) + async deploy(deployOptions: DeployOptions, account?: Web3BaseWalletAccount) { + if (!this.contract) + this.loadAbi(); + + return this.contract.deploy(deployOptions, account) .then(async tx => { if (this.web3Connection.options.restartModelOnDeploy && tx.contractAddress) { this._contractAddress = tx.contractAddress; diff --git a/src/base/ownable.ts b/src/base/ownable.ts index 7905316a..fb1a0228 100644 --- a/src/base/ownable.ts +++ b/src/base/ownable.ts @@ -1,18 +1,25 @@ -import {OwnableMethods} from '@methods/ownable'; -import {UseModel} from '@base/use-model'; + import {Errors} from '@interfaces/error-enum'; +import artifact from "@interfaces/generated/abi/Ownable"; +import {Model} from "@base/model"; +import {Web3Connection} from "@base/web3-connection"; +import {Web3ConnectionOptions} from "@interfaces/web3-connection-options"; + +export class Ownable extends Model { + constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { + super(web3Connection, artifact.abi, contractAddress); + } -export class Ownable extends UseModel { async setOwner(address: string) { - return this.model.sendTx(this.model.contract.methods.transferOwnership(address)) + return this.sendTx(this.contract.methods.transferOwnership(address)) } - async owner() { - return this.model.callTx(this.model.contract.methods.owner()); + async owner(): Promise { + return this.callTx(this.contract.methods.owner()); } async onlyOwner() { - const isOwner = (await this.owner()) === (await this.model.connection.getAddress()); + const isOwner = (await this.owner()) === (await this.connection.getAddress()); if (!isOwner) throw new Error(Errors.OnlyAdminCanPerformThisOperation) } diff --git a/src/base/pausable.ts b/src/base/pausable.ts deleted file mode 100644 index 41cdc5ac..00000000 --- a/src/base/pausable.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {Errors} from '@interfaces/error-enum'; -import {UseModel} from '@base/use-model'; -import {PausableMethods} from '@methods/pausable'; - -export class Pausable extends UseModel { - - async paused() { - return this.model.callTx(this.model.contract.methods.paused()); - } - - async whenNotPaused() { - const paused = await this.paused(); - if (paused) - throw new Error(Errors.ContractIsPaused); - } - -} diff --git a/src/base/stakeable.ts b/src/base/stakeable.ts deleted file mode 100644 index c0046e1f..00000000 --- a/src/base/stakeable.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {Model} from '@base/model'; - -export class Stakeable extends Model { - async changeTokenAddress(address: string) { - return this.sendTx(this.contract.methods.changeTokenAddress(address)) - } - - async safeGuardAllTokens(address: string) { - return this.sendTx(this.contract.methods.safeGuardAllTokens(address)) - } -} diff --git a/src/base/use-model.ts b/src/base/use-model.ts deleted file mode 100644 index 07cb39e6..00000000 --- a/src/base/use-model.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {Model} from '@base/model'; - -export type NeedsFromModel = 'sendTx' | 'sendUnsignedTx' | 'callTx' | 'contract' | 'connection' | 'account'; - -export type UseModelParams = - Pick, NeedsFromModel> - -export type MinimalModel = Pick; - -export class UseModel { - readonly model!: MinimalModel; - - constructor({sendTx, sendUnsignedTx, callTx, contract, connection, account}: UseModelParams) { - this.model = {sendTx, sendUnsignedTx, callTx, contract, connection, account} - } -} diff --git a/src/base/web3-connection.ts b/src/base/web3-connection.ts index 9a26a0ab..77eabc19 100644 --- a/src/base/web3-connection.ts +++ b/src/base/web3-connection.ts @@ -1,44 +1,50 @@ +import Web3, {Personal, Web3BaseProvider, type Web3BaseWalletAccount, Web3EthInterface} from 'web3'; import {Errors} from '@interfaces/error-enum'; -import Web3 from 'web3'; -import {Account, provider as Provider} from 'web3-core'; -import {HttpProviderOptions, WebsocketProviderOptions} from 'web3-core-helpers'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {fromWei, Utils} from 'web3-utils'; -import {Eth} from 'web3-eth'; +import {type Web3ConnectionOptions} from '@interfaces/web3-connection-options'; +import {type SupportedProviders} from "web3-types/src/web3_base_provider"; +import {fromSmartContractDecimals} from "@utils/numbers"; export class Web3Connection { protected web3!: Web3; - protected account!: Account; + + /* account should be used when dealing with privateKey accounts */ + protected account!: Web3BaseWalletAccount; + get Account() { return this.account; } /* eslint-disable complexity */ constructor(readonly options: Web3ConnectionOptions) { - const {web3CustomProvider: provider = null, autoStart = true} = options; + const {web3CustomProvider: provider = null, autoStart = true, restartModelOnDeploy} = options; - if (options.restartModelOnDeploy === undefined) + if (restartModelOnDeploy === undefined) this.options.restartModelOnDeploy = true; - if (autoStart || (provider && typeof provider !== "string" && provider?.connected)) { + const providerConnected = provider && + typeof provider !== "string" + && provider.hasOwnProperty('connected') + && (provider as unknown as {connected: boolean}).connected; + + if (autoStart || providerConnected) this.start(); - } } /* eslint-enable complexity */ get started() { return !!this.web3; } - get eth(): Eth { return this.web3?.eth; } - get utils(): Utils { return this.web3?.utils; } - get Web3(): Web3 { return this.web3; } - get Account(): Account { return this.account; } + get eth() { return this.web3?.eth; } + get utils() { return this.web3?.utils; } + get Web3() { return this.web3; } + + /* Account should be used when dealing with browser-accounts */ + get Personal() { return (this.web3.eth as Web3EthInterface & {personal: Personal}).personal; } async getAddress(): Promise { - return this.account ? this.account.address : - (await this.eth?.givenProvider?.request({method: 'eth_requestAccounts'}) || [""])[0]; + return this.account ? this.account.address : ((await this.Personal.getAccounts()) || [""])[0]; } async getBalance(ofAddress?: string): Promise { - return fromWei(await this.eth?.getBalance(ofAddress || await this.getAddress())); + return fromSmartContractDecimals(await this.eth?.getBalance(ofAddress || await this.getAddress())); } - async getETHNetworkId(): Promise { + async getETHNetworkId(): Promise { return this.eth?.net.getId(); } @@ -56,6 +62,7 @@ export class Web3Connection { this.web3 = new Web3((window as any).ethereum) this.web3.eth.handleRevert = false; + this.web3.eth.contractDataInputFill = "both"; this.web3.eth.transactionBlockTimeout = 200; if (!this.options.skipWindowAssignment) @@ -67,7 +74,7 @@ export class Web3Connection { /** * change the privateKey prop of {@link Web3ConnectionOptions} and start a new connection */ - switchToAccount(account: string|Account) { + switchToAccount(account: string|Web3BaseWalletAccount) { const pvtKey = typeof account === "string" ? account : account.privateKey; if (this.options.privateKey !== pvtKey) this.options.privateKey = pvtKey; @@ -82,8 +89,8 @@ export class Web3Connection { if (this.started && !restart) return; - const {web3Host = ``, web3ProviderOptions = undefined, web3CustomProvider = null} = this.options; - let provider: Provider = web3CustomProvider; + const {web3Host = ``, net = undefined, web3CustomProvider = undefined} = this.options; + let provider: SupportedProviders|undefined = web3CustomProvider; if (!web3Host && !provider) throw new Error(Errors.MissingWeb3ProviderHost) @@ -92,31 +99,32 @@ export class Web3Connection { if (!provider) { if (web3Link.includes(`http`)) - provider = new Web3.providers.HttpProvider(web3Link, web3ProviderOptions as HttpProviderOptions); + provider = new Web3.providers.HttpProvider(web3Link, net); else if (web3Link.includes(`ws`)) - provider = new Web3.providers.WebsocketProvider(web3Link, web3ProviderOptions as WebsocketProviderOptions); - } - - if (!provider) { - if (!this.options.web3ProviderOptions) - throw new Error(Errors.ProviderOptionsAreMandatoryIfIPC); - provider = new Web3.providers.IpcProvider(web3Link, web3ProviderOptions); + provider = new Web3.providers.WebsocketProvider(web3Link, net); } if (!provider) throw new Error(Errors.FailedToAssignAProvider); - this.web3 = new Web3(provider); + this.web3 = new Web3(provider as Web3BaseProvider); if (!this.options.skipWindowAssignment && typeof window !== 'undefined') (window as any).web3 = this.web3; if (this.options.privateKey) this.account = this.web3.eth.accounts.privateKeyToAccount(this.options.privateKey); + + this.web3.eth.contractDataInputFill = "both"; } /* eslint-enable complexity */ async sendNativeToken(to: string, amount: number) { - return this.eth.sendTransaction({from: await this.getAddress(), to, value: this.utils.toWei(amount.toString())}) + const data = { + from: await this.getAddress(), to, + value: this.utils?.toWei(amount, "ether") + }; + + return this.eth?.sendTransaction(data) } -} +} \ No newline at end of file diff --git a/src/base/web3-contract.ts b/src/base/web3-contract.ts index d176f652..4ef47519 100644 --- a/src/base/web3-contract.ts +++ b/src/base/web3-contract.ts @@ -1,13 +1,14 @@ -import {AbiItem, sha3} from 'web3-utils'; -import {Contract, ContractSendMethod, DeployOptions} from 'web3-eth-contract'; -import Web3 from 'web3'; -import {Account, TransactionConfig} from 'web3-core'; +import {sha3} from 'web3-utils'; +import {Contract,} from 'web3-eth-contract'; +import Web3, {ContractAbi, FMT_BYTES, FMT_NUMBER, Web3BaseWalletAccount} from 'web3'; import {Log, TransactionReceipt} from '@interfaces/web3-core'; import {Errors} from '@interfaces/error-enum'; -import {transactionHandler} from '@utils/transaction-handler'; +import {transactionHandler} from '@utils/models/transaction-handler'; import {Web3ConnectionOptions} from "@interfaces/web3-connection-options"; - -const DEFAULT_CONFIRMATIONS_NEEDED = 1; +import {AbiEventFragment, AbiFragment} from "web3-types/src/eth_abi_types"; +import DeployOptions from "@interfaces/contract/deploy-options"; +import {NonPayableMethodObject, PayableMethodObject} from "web3-eth-contract/src/types"; +import {Transaction} from "web3-types/src/eth_types"; export interface Web3ContractOptions { /** @@ -18,7 +19,7 @@ export interface Web3ContractOptions { /** * If not provided, gasPrice will be queried on the network */ - gasPrice?: string; + gasPrice?: number; /** * If not provided, gasAmount will be estimated from the network @@ -36,11 +37,17 @@ export interface Web3ContractOptions { * @default true */ auto: boolean; // default: true, auto = true will calculate needed values if none is provided. + + /** + * Minimum confirmations needed to return a successful receipt + * @default 1 + */ + confirmations?: number; } -export class Web3Contract { - readonly self!: Contract; - readonly abi: AbiItem[]; +export class Web3Contract { + readonly self!: Contract; + readonly abi: Abi; /** * Transaction options that will be used on each transaction. @@ -48,44 +55,51 @@ export class Web3Contract { * @example * `myWeb3Connection.options.gas = 10000;` * - * @default `{auto: true}` + * @default {auto: true, confirmations: 1} */ - readonly options: Web3ContractOptions = {auto: true} + readonly options: Web3ContractOptions = {auto: true, confirmations: 1} constructor(readonly web3: Web3, - abi: AbiItem[], + abi: Abi, readonly address?: string, - options: Web3ContractOptions = {auto: true}) { - this.self = new web3.eth.Contract(abi, address); + options: Web3ContractOptions = {auto: true, confirmations: 1}) { + if (!abi) + throw new Error(Errors.MissingAbiInterfaceFromArguments) + + this.self = new web3.eth.Contract(abi, address, { + config: {contractDataInputFill: "both", transactionConfirmationBlocks: options.confirmations} + }); this.options = options; this.abi = abi; } - get methods(): Methods { return this.self.methods; } - get events(): Events { return this.self.events; } + get methods() { return this.self.methods; } + get events() { return this.self.events; } /* eslint-disable complexity */ - async txOptions(method: ContractSendMethod, value?: string, from?: string) { - let {gas = 0, gasAmount = 0, gasPrice = ``,} = this.options || {}; - const {gasFactor = 1, auto = true} = this.options || {}; + async txOptions(method: Pick, + value?: string, + from?: string) { + let {gas = 0, gasAmount = 0, gasPrice = 0,} = this.options || {}; + const {gasFactor = 0, auto = true} = this.options || {}; if (!auto && (!gas || !gasPrice)) throw new Error(Errors.GasAndGasPriceMustBeProvidedIfNoAutoTxOptions); if (auto) { if (!gasPrice) - gasPrice = await this.web3.eth.getGasPrice(); + gasPrice = Number(await this.web3.eth.getGasPrice({number: FMT_NUMBER.NUMBER, bytes: FMT_BYTES.HEX})); if (!gasAmount) - gasAmount = await method.estimateGas({...value ? {value} : {}, ... from ? {from} : {}}); + gasAmount = Number(await method.estimateGas({...value ? {value} : {}, ...from ? {from} : {}})); if (!gas) - gas = Math.round(gasAmount * gasFactor); + gas = Math.round(Number(gasAmount) * gasFactor); } return { - ... gas ? {gas} : {}, - ... gasPrice ? {gasPrice} : {}, + ... gas ? {gas: gas.toString()} : {}, + ... gasPrice ? {gasPrice: gasPrice.toString()} : {}, }; } /* eslint-enable complexity */ @@ -94,10 +108,10 @@ export class Web3Contract { /** * Parses the logs of a transaction receipt using its abi events */ - parseReceiptLogs(receipt: TransactionReceipt): TransactionReceipt { + parseReceiptLogs(receipt: TransactionReceipt): TransactionReceipt { if (receipt.logs?.length) { const _events = - this.abi.filter(({type}) => type === "event") + (this.abi.filter(({type}) => type === "event") as AbiEventFragment[]) .map(({inputs, ...rest}) => ({inputs, ...rest, topic: sha3(`${rest.name}(${inputs?.map(i=> i.type).join(',')})`)})); @@ -109,7 +123,7 @@ export class Web3Contract { if (_event.topic === log.topics[0] && hasAddressAndEqualLog(log)) { const args = this.web3.eth.abi - .decodeLog(_event.inputs || [], log.data, _event.anonymous ? log.topics : log.topics.slice(1)) + .decodeLog([..._event.inputs ?? []], log.data, _event.anonymous ? log.topics : log.topics.slice(1)) receipt.logs[i] = {...log, event: _event?.name, args} as unknown as Log & {event: string, args: T}; } } @@ -123,52 +137,42 @@ export class Web3Contract { /** * Deploys the new AbiItem and returns its transaction receipt */ - async deploy(abi: AbiItem[], deployOptions: DeployOptions, account?: Account): Promise { + async deploy(deployOptions: DeployOptions, + account?: Web3BaseWalletAccount): Promise { - const deployer = async (resolve: (receipt: TransactionReceipt) => void, reject: (error: Error) => void) => { + // eslint-disable-next-line no-unused-vars + const deployer = async (resolve: (tx: TransactionReceipt) => void, reject: (error: Error) => void) => { try { - const newContract = new this.web3.eth.Contract(abi); - const limbo = newContract.deploy(deployOptions); + const limbo = this.self.deploy(deployOptions); const from = - account?.address || (await this.web3.eth.givenProvider.request({method: 'eth_requestAccounts'}))[0]; - - /* eslint-disable no-inner-declarations */ - function onConfirmation(number: number, receipt: any) { - if (DEFAULT_CONFIRMATIONS_NEEDED >= number) - resolve(receipt as unknown as TransactionReceipt); - } - - function onError(error: any) { reject(error); } - /* eslint-enable no-inner-declarations */ + account?.address || (await (this.web3.eth as any).personal.getAccounts())[0]; if (account) { - const data = limbo.encodeABI(); - const signedTx = await account.signTransaction({data, from, ...await this.txOptions(limbo, undefined, from)}); - this.web3.eth.sendSignedTransaction(signedTx.rawTransaction!) - .on(`confirmation`, onConfirmation) - .on(`error`, onError); + // eslint-disable-next-line max-len + this.sendSignedTx(account, limbo.encodeABI(), undefined, await this.txOptions(limbo, "0x0", from), this.options) + .then(resolve) + .catch(reject); } else - limbo.send({from, ...await this.txOptions(limbo, undefined, from)}) - .on(`confirmation`, onConfirmation) - .on(`error`, onError); - + this.sendUnsignedTx(limbo as any, undefined).then(resolve).catch(reject) } catch (e: any) { - reject(e); + reject(e as Error); } } - return new Promise(deployer).then(receipt => this.parseReceiptLogs(receipt)); + return new Promise(deployer) + .then(receipt => this.parseReceiptLogs(receipt)); } /** * Sends a signed transaction with the provided account */ - sendSignedTx(account: Account, + async sendSignedTx(account: Web3BaseWalletAccount, data: string, - value = ``, - txOptions: Partial, { + value = "0x0", + txOptions: Partial, { debug, - customTransactionHandler: cb + customTransactionHandler: cb, + confirmations, }: Partial = {}): Promise { /* eslint-disable no-async-promise-executor */ return new Promise(async (resolve, reject) => { @@ -177,18 +181,48 @@ export class Web3Contract { const from = account.address; const to = this.address; const signedTx = await account.signTransaction({from, to, data, value, ...txOptions}); - const sendMethod = () => this.web3.eth.sendSignedTransaction(signedTx.rawTransaction!); + const sendMethod = () => + this.web3.eth.sendSignedTransaction(signedTx.rawTransaction); if (cb) - cb(sendMethod(), resolve, reject, debug); + cb(sendMethod() as any, resolve, reject, debug); else - transactionHandler(sendMethod(), resolve, reject, debug); + transactionHandler(sendMethod(), resolve, reject, debug, confirmations); } catch (e) { - console.error(e); + console.error(`signedTxError`, e); reject(e); } }).then((receipt) => this.parseReceiptLogs(receipt)) /* eslint-enable no-async-promise-executor */ } + + /* eslint-disable no-async-promise-executor */ + /** + * Send unsigned transaction + */ + async sendUnsignedTx(method: PayableMethodObject|NonPayableMethodObject, + value?: any, { + debug, + customTransactionHandler: cb, confirmations = 1, + }: Partial = {}): Promise { + const from = (await this.web3.eth.personal.getAccounts())?.[0]; + + return new Promise(async (resolve, reject) => { + try { + const options = await this.txOptions(method, value, from); + const sendMethod = () => method.send({from, value, ...options}); + + if (cb) + cb(sendMethod() as any, resolve, reject, debug) + else + transactionHandler(sendMethod(), resolve, reject, debug, confirmations) + } catch (e) { + if (debug) + console.error(e); + reject(e); + } + }).then(receipt => this.parseReceiptLogs(receipt)); + } + /* eslint-enable no-async-promise-executor */ } diff --git a/src/index.ts b/src/index.ts index 24f40ec3..563f1f45 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,115 +1,59 @@ -export * from '@models/cerc20'; -export * from '@models/erc20'; -export * from '@models/erc20-token-lock'; -export * from '@models/erc721-collectibles'; -export * from '@models/erc721-standard'; -export * from '@models/erc1155-ownable'; -export * from '@models/erc1155-standard'; -export * from '@models/eth-utils'; -export * from '@models/loophole'; -export * from '@models/network'; -export * from '@models/network-v2'; -export * from '@models/bounty-token'; -export * from '@models/network-factory'; -export * from '@models/real-fevr-marketplace'; -export * from '@models/real-fevr-opener'; -export * from '@models/sablier'; +export * from '@models/token/ERC20/erc20'; +export * from '@models/token/ERC20/erc20-token-lock'; +export * from '@models/token/ERC721/erc721-collectibles'; +export * from '@models/token/ERC721/erc721-standard'; +export * from '@models/token/ERC1155/erc1155-ownable'; +export * from '@models/token/ERC4626/erc4626'; +export * from '@models/bepro/network-v2'; +export * from '@models/bepro/token/ERC721/bounty-token'; export * from '@models/staking-contract'; -export * from '@models/uniswap-v3-router-bridge'; export * from '@models/votable'; -export * from '@models/network-registry'; -export * from '@models/erc4626'; +export * from '@models/bepro/network-registry'; export * from '@base/model'; -export * from '@base/use-model'; -export * from '@interfaces/deployable'; export * from '@base/ownable'; -export * from '@base/pausable'; -export * from '@base/stakeable'; export * from '@base/web3-connection'; export * from '@base/web3-contract'; -export * from '@base/ipfs-wrapper'; export * from '@base/governed'; export * from '@interfaces/deployable'; -export * from '@interfaces/ipfs-options'; -export * from '@interfaces/loophole-pool-info'; -export * from '@interfaces/loophole-pool-update'; -export * from '@interfaces/loophole-user-info'; -export * from '@interfaces/network-merge'; -export * from '@interfaces/network-issue'; -export * from '@interfaces/treasury-info'; -export * from '@interfaces/oracles-summary'; -export * from '@interfaces/oracles-resume'; -export * from '@interfaces/real-fevr-marketplace-distributions'; -export * from '@interfaces/real-fevr-pack'; -export * from '@interfaces/sablier-compound-stream'; -export * from '@interfaces/sablier-interest'; -export * from '@interfaces/sablier-stream'; +export * from '@interfaces/bepro/network-merge'; +export * from '@interfaces/bepro/network-issue'; +export * from '@interfaces/bepro/treasury-info'; +export * from '@interfaces/bepro/oracles-summary'; +export * from '@interfaces/bepro/oracles-resume'; +export * from '@interfaces/bepro/bounty'; +export * from '@interfaces/bepro/pull-request'; +export * from '@interfaces/bepro/proposal'; +export * from '@interfaces/bepro/proposal-detail'; +export * from '@interfaces/bepro/benefactor'; export * from '@interfaces/staking-product'; export * from '@interfaces/staking-subscription'; -export * from '@interfaces/swap-router'; export * from '@interfaces/voter-info'; export * from '@interfaces/modifiers'; export * from '@interfaces/block-number-timestamp'; export * from '@interfaces/web3-connection-options'; -export * from '@interfaces/bounty'; -export * from '@interfaces/pull-request'; -export * from '@interfaces/proposal'; -export * from '@interfaces/proposal-detail'; -export * from '@interfaces/benefactor'; export * from '@interfaces/eip4361'; export * from '@interfaces/typed-data-v4'; -export * from '@events/x-events'; -export * from '@events/network-events'; -export * from '@events/erc4626'; - -export * from '@methods/contract-call-method'; -export * from '@methods/erc20'; -export * from '@methods/erc20-token-lock'; -export * from '@methods/erc721-collectibles'; -export * from '@methods/erc721-standard'; -export * from '@methods/eth-utils'; -export * from '@methods/locked-tokens-info'; -export * from '@methods/loophole'; -export * from '@methods/network'; -export * from '@methods/network-v2'; -export * from '@methods/network-factory'; -export * from '@methods/network-factory-v2'; -export * from '@methods/real-fevr-marketplace'; -export * from '@methods/real-fevr-opener'; -export * from '@methods/ownable'; -export * from '@methods/pausable'; -export * from '@methods/sablier'; -export * from '@methods/staking-contract'; -export * from '@methods/votable'; -export * from '@methods/uniswap-v3-router-bridge'; -export * from '@methods/erc4626'; +export * from '@utils/models/benefactor'; +export * from '@utils/models/bounty'; +export * from '@utils/models/delegation'; +export * from '@utils/models/locked-tokens-info'; +export * from '@utils/models/oracles-resume'; +export * from '@utils/models/pool-information'; +export * from '@utils/models/proposal'; +export * from '@utils/models/proposal-detail'; +export * from '@utils/models/pull-request'; +export * from '@utils/models/stake-subscription'; +export * from '@utils/models/staking-product'; +export * from '@utils/models/transaction-handler'; +export * from '@utils/models/voter-info'; +export * from '@utils/models/voting-poll-winner'; -export * from '@utils/block-number-timestamp'; -export * from '@utils/locked-tokens-info'; -export * from '@utils/loophole-user-info'; -export * from '@utils/loophole-pool-info'; -export * from '@utils/loophole-pool-update'; -export * from '@utils/network-issue'; -export * from '@utils/numbers'; -export * from '@utils/pool-information'; -export * from '@utils/real-fevr-pack'; -export * from '@utils/sablier-compounding-stream'; -export * from '@utils/sablier-interest'; -export * from '@utils/sablier-stream'; -export * from '@utils/stake-subscription'; -export * from '@utils/transaction-handler'; -export * from '@utils/voter-info'; -export * from '@utils/voting-poll-winner'; -export * from '@utils/benefactor'; -export * from '@utils/bounty'; -export * from '@utils/oracles-resume'; -export * from '@utils/proposal-detail'; -export * from '@utils/proposal'; -export * from '@utils/pull-request'; +export * from '@utils/constants'; export * from '@utils/eip4361'; export * from '@utils/json-rpc-params'; +export * from '@utils/numbers'; + -export * as Defaults from '@utils/constants'; diff --git a/src/interfaces/benefactor.ts b/src/interfaces/bepro/benefactor.ts similarity index 100% rename from src/interfaces/benefactor.ts rename to src/interfaces/bepro/benefactor.ts diff --git a/src/interfaces/bounty.ts b/src/interfaces/bepro/bounty.ts similarity index 76% rename from src/interfaces/bounty.ts rename to src/interfaces/bepro/bounty.ts index ef12a9c2..ed58206c 100644 --- a/src/interfaces/bounty.ts +++ b/src/interfaces/bepro/bounty.ts @@ -1,6 +1,6 @@ -import { Proposal } from "@interfaces/proposal"; -import { Benefactor } from "@interfaces/benefactor"; -import { PullRequest } from "@interfaces/pull-request"; +import { Proposal } from "@interfaces/bepro/proposal"; +import { Benefactor } from "@interfaces/bepro/benefactor"; +import { PullRequest } from "@interfaces/bepro/pull-request"; export interface Bounty { id: number; diff --git a/src/interfaces/delegation.ts b/src/interfaces/bepro/delegation.ts similarity index 100% rename from src/interfaces/delegation.ts rename to src/interfaces/bepro/delegation.ts diff --git a/src/interfaces/network-issue.ts b/src/interfaces/bepro/network-issue.ts similarity index 100% rename from src/interfaces/network-issue.ts rename to src/interfaces/bepro/network-issue.ts diff --git a/src/interfaces/network-merge.ts b/src/interfaces/bepro/network-merge.ts similarity index 100% rename from src/interfaces/network-merge.ts rename to src/interfaces/bepro/network-merge.ts diff --git a/src/interfaces/oracle.ts b/src/interfaces/bepro/oracle.ts similarity index 100% rename from src/interfaces/oracle.ts rename to src/interfaces/bepro/oracle.ts diff --git a/src/interfaces/oracles-resume.ts b/src/interfaces/bepro/oracles-resume.ts similarity index 100% rename from src/interfaces/oracles-resume.ts rename to src/interfaces/bepro/oracles-resume.ts diff --git a/src/interfaces/oracles-summary.ts b/src/interfaces/bepro/oracles-summary.ts similarity index 100% rename from src/interfaces/oracles-summary.ts rename to src/interfaces/bepro/oracles-summary.ts diff --git a/src/interfaces/proposal-detail.ts b/src/interfaces/bepro/proposal-detail.ts similarity index 100% rename from src/interfaces/proposal-detail.ts rename to src/interfaces/bepro/proposal-detail.ts diff --git a/src/interfaces/proposal.ts b/src/interfaces/bepro/proposal.ts similarity index 78% rename from src/interfaces/proposal.ts rename to src/interfaces/bepro/proposal.ts index 7ab2cd65..03f11580 100644 --- a/src/interfaces/proposal.ts +++ b/src/interfaces/bepro/proposal.ts @@ -1,4 +1,4 @@ -import { ProposalDetail } from "@interfaces/proposal-detail"; +import { ProposalDetail } from "@interfaces/bepro/proposal-detail"; export interface Proposal { id: number; diff --git a/src/interfaces/pull-request.ts b/src/interfaces/bepro/pull-request.ts similarity index 100% rename from src/interfaces/pull-request.ts rename to src/interfaces/bepro/pull-request.ts diff --git a/src/interfaces/treasury-info.ts b/src/interfaces/bepro/treasury-info.ts similarity index 100% rename from src/interfaces/treasury-info.ts rename to src/interfaces/bepro/treasury-info.ts diff --git a/src/interfaces/contract/deploy-options.d.ts b/src/interfaces/contract/deploy-options.d.ts new file mode 100644 index 00000000..6a8798e5 --- /dev/null +++ b/src/interfaces/contract/deploy-options.d.ts @@ -0,0 +1,14 @@ +import type {ContractConstructorArgs, HexString} from "web3-types"; +import {ContractAbi} from "web3"; + +export default interface DeployOptions { + /** + * The byte code of the contract. + */ + data: HexString; + input?: HexString; + /** + * The arguments which get passed to the constructor on deployment. + */ + arguments: ContractConstructorArgs; +} \ No newline at end of file diff --git a/src/interfaces/deployable.ts b/src/interfaces/deployable.ts index f8fe237a..25bde7bc 100644 --- a/src/interfaces/deployable.ts +++ b/src/interfaces/deployable.ts @@ -1,5 +1,5 @@ import {TransactionReceipt} from '@interfaces/web3-core'; export interface Deployable { - deployJsonAbi(...args: any[]): Promise; + deployJsonAbi(...args: never[]): Promise; } diff --git a/src/interfaces/error-enum.ts b/src/interfaces/error-enum.ts index b7f2a4e6..ff498640 100644 --- a/src/interfaces/error-enum.ts +++ b/src/interfaces/error-enum.ts @@ -1,26 +1,13 @@ export enum Errors { - NoPrivateKeyFoundOnOptions = `No private key found on options`, - ProviderOptionsAreMandatoryIfIPC = `Provider options are mandatory if chosen provider is IPC`, NoEthereumObjectFoundOnWindow = `No ethereum object found on window`, WindowObjectNotFound = `Window object not found`, MissingWeb3ProviderHost = `Missing options.web3Host parameter and options.web3CustomProvider; Either is required.`, MissingAbiInterfaceFromArguments = `Missing ABI Interface from arguments list or empty Abi`, - AmountNeedsToBeHigherThanZero = `Amount needs to be higher than zero`, MissingContractAddress = `Missing contract address`, - ContractIsPaused = `Contract is paused`, MissingTokenAddress = `Missing token address`, OnlyAdminCanPerformThisOperation = `Only admin can perform this operation`, InvalidTokenAmount = `Invalid token amount`, InteractionIsNotAvailableCallApprove = `Interaction not available, call 'approve' first`, - NoLockedAmountOrNotReleaseDate = `User has no locked amount or release date has not been reached`, - MissingERC20AddressOnContractPleaseSetPurchaseToken = - `Missing ERC20 address on contract, please call setPurchaseTokenAddress`, - MissingERC20AddressOnContract = `Missing ERC20 address on contract`, - MissingERC721AddressOnContract = `Missing ERC721 address on contract`, - MissingLpTokenAddressPleaseDeployUsingOne = `Missing lp token address please deploy Loophole class using one`, - MissingSwapAddressPleaseDeployUsingOne = `Missing swap router address, please deploy using one`, - MissingEthUtilsAddressPleaseProvideOne = `Missing eth utils address, please provide one`, GasAndGasPriceMustBeProvidedIfNoAutoTxOptions = `Both gas and gasPrice must be provided if no auto txOptions`, - MissingERC20UnderlyingToken = `Missing ERC20 underlying token address`, FailedToAssignAProvider = `Failed to assign a provider. Doublecheck Web3ConnectionOptions.` } diff --git a/src/interfaces/events/cerc20-events.ts b/src/interfaces/events/cerc20-events.ts deleted file mode 100644 index 94c5935e..00000000 --- a/src/interfaces/events/cerc20-events.ts +++ /dev/null @@ -1,2 +0,0 @@ -export interface ApprovalEvent { returnValues: {'owner': string; 'spender': string; 'value': number} } -export interface TransferEvent { returnValues: {'from': string; 'to': string; 'value': number} } diff --git a/src/interfaces/events/erc1155-standard-events.ts b/src/interfaces/events/erc1155-standard-events.ts deleted file mode 100644 index 2da9a184..00000000 --- a/src/interfaces/events/erc1155-standard-events.ts +++ /dev/null @@ -1,24 +0,0 @@ -export interface ApprovalForAllEvent { - returnValues: { account: string; operator: string; approved: boolean }; -} -export interface TransferBatchEvent { - returnValues: { - operator: string; - from: string; - to: string; - ids: number[]; - values: number[]; - }; -} -export interface TransferSingleEvent { - returnValues: { - operator: string; - from: string; - to: string; - id: number; - value: number; - }; -} -export interface URIEvent { - returnValues: { value: string; id: number }; -} diff --git a/src/interfaces/events/erc4626.ts b/src/interfaces/events/erc4626.ts deleted file mode 100644 index b9a94d72..00000000 --- a/src/interfaces/events/erc4626.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface ApprovalEvent { - returnValues: { 'owner': string; 'spender': string; 'value': number; } -} - -export interface DepositEvent { - returnValues: { 'sender': string; 'owner': string; 'assets': number; 'shares': number; } -} - -export interface TransferEvent { - returnValues: { 'from': string; 'to': string; 'value': number; } -} - -export interface WithdrawEvent { - returnValues: { 'sender': string; 'receiver': string; 'owner': string; 'assets': number; 'shares': number; } -} \ No newline at end of file diff --git a/src/interfaces/events/governed-events.ts b/src/interfaces/events/governed-events.ts deleted file mode 100644 index a2fefc66..00000000 --- a/src/interfaces/events/governed-events.ts +++ /dev/null @@ -1 +0,0 @@ -export interface GovernorTransferredEvent { returnValues: {'previousGovernor': string;'newGovernor': string;} } diff --git a/src/interfaces/events/network-events.ts b/src/interfaces/events/network-events.ts deleted file mode 100644 index 3027a5de..00000000 --- a/src/interfaces/events/network-events.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface CloseIssueEvent { returnValues: {'id': number; 'mergeID': number} } -export interface DisputeMergeEvent { - returnValues: {'id': number; 'mergeID': number; 'oracles': number; 'disputer': string} -} -export interface GovernorTransferredEvent { returnValues: {'previousGovernor': string; 'newGovernor': string} } -export interface MergeProposalCreatedEvent { returnValues: {'id': number; 'mergeID': number; 'creator': string} } -export interface OpenIssueEvent { returnValues: {'id': number; 'opener': string; 'amount': number} } -export interface PausedEvent { returnValues: {'account': string} } -export interface RecognizedAsFinishedEvent { returnValues: {'id': number} } -export interface RedeemIssueEvent { returnValues: {'id': number} } -export interface UnpausedEvent { returnValues: {'account': string} } diff --git a/src/interfaces/events/network-registry.ts b/src/interfaces/events/network-registry.ts index e07fc097..656cfe96 100644 --- a/src/interfaces/events/network-registry.ts +++ b/src/interfaces/events/network-registry.ts @@ -1,4 +1,4 @@ -export interface GovernorTransferredEvent { returnValues: {'previousGovernor': string;'newGovernor': string;} } +export type GovernorTransferredEvent = CustomEvent<{previousGovernor: string;newGovernor: string;}> export interface NetworkClosedEvent { returnValues: { 'network': string; } } export interface NetworkRegisteredEvent { returnValues: {'network': string;'creator': string;'id': number;} } export interface UserLockedAmountChangedEvent { returnValues: {'user': string;'newAmount': number;} } diff --git a/src/interfaces/events/network-v2-events.ts b/src/interfaces/events/network-v2-events.ts deleted file mode 100644 index 52e52ba6..00000000 --- a/src/interfaces/events/network-v2-events.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface BountyCanceledEvent { returnValues: {'id': number;} } -export interface BountyClosedEvent { returnValues: {'id': number;} } -export interface BountyCreatedEvent { returnValues: {'id':string;'cid': string;'creator': string;} } -export interface BountyProposalCreatedEvent { returnValues: {'bountyId': number;'prId': number;'proposalId': number;} } -export interface BountyProposalDisputedEvent { returnValues: {'bountyId': number;'prId': number;'proposalId': number;} } -export interface BountyProposalRefusedEvent { returnValues: {'bountyId': number;'prId': number;'proposalId': number;} } -export interface BountyPullRequestCanceledEvent { returnValues: {'bountyId': number;'pullRequestId': number;} } -export interface BountyPullRequestCreatedEvent { returnValues: {'bountyId': number;'pullRequestId': number;} } -export interface BountyPullRequestReadyForReviewEvent { returnValues: {'bountyId': number;'pullRequestId': number;} } -export interface GovernorTransferredEvent { returnValues: {'previousGovernor': string;'newGovernor': string;} } -export interface BountyFunded { returnValues: {'id': string;'funded': boolean;} } -export interface BountyAmountUpdatedEvent { returnValues: {'id': number;'amount': number;} } -export interface OraclesChangedEvent { returnValues: {'actor': string;'actionAmount': number; 'newLockedTotal': number} } -export interface OraclesTransferEvent { returnValues: {'from': string;'to': string; 'amount': number} } -export interface NetworkParamChanged { returnValues: { 'param': number; 'newvalue': number; 'oldvalue': number } } \ No newline at end of file diff --git a/src/interfaces/events/x-events.ts b/src/interfaces/events/x-events.ts deleted file mode 100644 index cf3719bf..00000000 --- a/src/interfaces/events/x-events.ts +++ /dev/null @@ -1,4 +0,0 @@ -import {EventData} from 'web3-eth-contract'; - -export type XEvents = { [K in keyof EventData]: EventData[K] extends V ? V : any } -export type XPromiseEvent = Promise[]> diff --git a/src/interfaces/generated/abi/BountyToken.ts b/src/interfaces/generated/abi/BountyToken.ts new file mode 100644 index 00000000..4878c4d6 --- /dev/null +++ b/src/interfaces/generated/abi/BountyToken.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"_dispatcher","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_proposedGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"uri","type":"string"},{"components":[{"internalType":"address","name":"originNetwork","type":"address"},{"internalType":"uint256","name":"bountyId","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"string","name":"kind","type":"string"}],"internalType":"struct INetworkV2.BountyConnector","name":"award","type":"tuple"}],"name":"awardBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dispatcher","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getBountyToken","outputs":[{"components":[{"internalType":"address","name":"originNetwork","type":"address"},{"internalType":"uint256","name":"bountyId","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"string","name":"kind","type":"string"}],"internalType":"struct INetworkV2.BountyConnector","name":"bountyConnector","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proposedGovernor","type":"address"}],"name":"proposeGovernor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dispatcher_","type":"address"}],"name":"setDispatcher","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIds","outputs":[{"internalType":"address","name":"originNetwork","type":"address"},{"internalType":"uint256","name":"bountyId","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"string","name":"kind","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x6080604052600980546001600160a01b03191690553480156200002157600080fd5b5060405162001d9c38038062001d9c833981016040819052620000449162000163565b828260006200005483826200027f565b5060016200006382826200027f565b505060088054336001600160a01b031991821617909155600980549091166001600160a01b039390931692909217909155506200034b915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000c657600080fd5b81516001600160401b0380821115620000e357620000e36200009e565b604051601f8301601f19908116603f011681019082821181831017156200010e576200010e6200009e565b816040528381526020925086838588010111156200012b57600080fd5b600091505b838210156200014f578582018301518183018401529082019062000130565b600093810190920192909252949350505050565b6000806000606084860312156200017957600080fd5b83516001600160401b03808211156200019157600080fd5b6200019f87838801620000b4565b94506020860151915080821115620001b657600080fd5b50620001c586828701620000b4565b604086015190935090506001600160a01b0381168114620001e557600080fd5b809150509250925092565b600181811c908216806200020557607f821691505b6020821081036200022657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027a57600081815260208120601f850160051c81016020861015620002555750805b601f850160051c820191505b81811015620002765782815560010162000261565b5050505b505050565b81516001600160401b038111156200029b576200029b6200009e565b620002b381620002ac8454620001f0565b846200022c565b602080601f831160018114620002eb5760008415620002d25750858301515b600019600386901b1c1916600185901b17855562000276565b600085815260208120601f198616915b828110156200031c57888601518255948401946001909101908401620002fb565b50858210156200033b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611a41806200035b6000396000f3fe6080604052600436106101405760003560e01c806395d89b41116100b6578063bfc539d71161006f578063bfc539d714610384578063c87b56dd1461038c578063cb7e9057146103ac578063d58778d6146103cc578063dcc6c5a2146103fc578063e985e9c51461041c57600080fd5b806395d89b41146102df578063a13594bf146102f4578063a22cb46514610314578063b88d4fde14610334578063ba22bd761461034f578063bc9683261461036f57600080fd5b806323b872dd1161010857806323b872dd1461022357806342842e0e1461023e5780636352211e1461025e57806370a082311461027e57806395260843146102ac57806395c48bd5146102cc57600080fd5b806301ffc9a71461014557806306fdde031461017a578063081812fc1461019c578063095ea7b3146101d457806319dba3d2146101f6575b600080fd5b34801561015157600080fd5b5061016561016036600461132c565b61043c565b60405190151581526020015b60405180910390f35b34801561018657600080fd5b5061018f610467565b6040516101719190611399565b3480156101a857600080fd5b506101bc6101b73660046113ac565b6104f9565b6040516001600160a01b039091168152602001610171565b3480156101e057600080fd5b506101f46101ef3660046113da565b610522565b005b34801561020257600080fd5b506102166102113660046113ac565b610531565b6040516101719190611406565b34801561022f57600080fd5b506101f4610140366004611447565b34801561024a57600080fd5b506101f4610259366004611447565b6106a8565b34801561026a57600080fd5b506101bc6102793660046113ac565b6106c7565b34801561028a57600080fd5b5061029e610299366004611488565b6106d2565b604051908152602001610171565b3480156102b857600080fd5b506008546101bc906001600160a01b031681565b6101f46102da366004611488565b61071a565b3480156102eb57600080fd5b5061018f610759565b34801561030057600080fd5b506007546101bc906001600160a01b031681565b34801561032057600080fd5b506101f461032f3660046114a5565b610768565b34801561034057600080fd5b506101f461014036600461156f565b34801561035b57600080fd5b506101f461036a366004611488565b610773565b34801561037b57600080fd5b50600a5461029e565b6101f46107e1565b34801561039857600080fd5b5061018f6103a73660046113ac565b61085e565b3480156103b857600080fd5b506009546101bc906001600160a01b031681565b3480156103d857600080fd5b506103ec6103e73660046113ac565b61096f565b60405161017194939291906115ef565b34801561040857600080fd5b506101f4610417366004611626565b610a41565b34801561042857600080fd5b506101656104373660046116ba565b610ae1565b60006001600160e01b03198216632483248360e11b1480610461575061046182610b0f565b92915050565b606060008054610476906116e8565b80601f01602080910402602001604051908101604052809291908181526020018280546104a2906116e8565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b5050505050905090565b600061050482610b5f565b506000828152600460205260409020546001600160a01b0316610461565b61052d828233610b98565b5050565b610565604051806080016040528060006001600160a01b031681526020016000815260200160008152602001606081525090565b600a5482106105a05760405162461bcd60e51b8152602060048201526002602482015261042360f41b60448201526064015b60405180910390fd5b600a82815481106105b3576105b3611722565b90600052602060002090600402016040518060800160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015481526020016002820154815260200160038201805461061f906116e8565b80601f016020809104026020016040519081016040528092919081815260200182805461064b906116e8565b80156106985780601f1061066d57610100808354040283529160200191610698565b820191906000526020600020905b81548152906001019060200180831161067b57829003601f168201915b5050505050815250509050919050565b6106c2838383604051806020016040528060008152600080fd5b505050565b600061046182610b5f565b60006001600160a01b0382166106fe576040516322718ad960e21b815260006004820152602401610597565b506001600160a01b031660009081526003602052604090205490565b610722610ba5565b6001600160a01b038116330361073757600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b606060018054610476906116e8565b61052d338383610bbe565b61077b610ba5565b6009546001600160a01b03908116908216036107bf5760405162461bcd60e51b815260206004820152600360248201526205344360ec1b6044820152606401610597565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031633146107f857600080fd5b6007546008546040516001600160a01b0392831692909116907f6fadb1c244276388aee22be93b919985a18748c021e5d48553957a48101a256090600090a360078054600880546001600160a01b03199081166001600160a01b03841617909155169055565b606061086982610b5f565b5060008281526006602052604081208054610883906116e8565b80601f01602080910402602001604051908101604052809291908181526020018280546108af906116e8565b80156108fc5780601f106108d1576101008083540402835291602001916108fc565b820191906000526020600020905b8154815290600101906020018083116108df57829003601f168201915b50505050509050600061091a60408051602081019091526000815290565b9050805160000361092c575092915050565b81511561095e578082604051602001610946929190611738565b60405160208183030381529060405292505050919050565b61096784610c5d565b949350505050565b600a818154811061097f57600080fd5b600091825260209091206004909102018054600182015460028301546003840180546001600160a01b039094169550919390929091906109be906116e8565b80601f01602080910402602001604051908101604052809291908181526020018280546109ea906116e8565b8015610a375780601f10610a0c57610100808354040283529160200191610a37565b820191906000526020600020905b815481529060010190602001808311610a1a57829003601f168201915b5050505050905084565b6009546001600160a01b03163314610a815760405162461bcd60e51b815260206004820152600360248201526204142360ec1b6044820152606401610597565b600a54610a8e8482610cd2565b610a988184610cec565b600a805460018101825560009190915282906004027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801610ad9828261186d565b505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b1480610b4057506001600160e01b03198216635b5e139f60e01b145b8061046157506301ffc9a760e01b6001600160e01b0319831614610461565b6000818152600260205260408120546001600160a01b03168061046157604051637e27328960e01b815260048101849052602401610597565b6106c28383836001610d3c565b6008546001600160a01b03163314610bbc57600080fd5b565b6001600160a01b038216610bf057604051630b61174360e31b81526001600160a01b0383166004820152602401610597565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060610c6882610b5f565b506000610c8060408051602081019091526000815290565b90506000815111610ca05760405180602001604052806000815250610ccb565b80610caa84610e42565b604051602001610cbb929190611738565b6040516020818303038152906040525b9392505050565b61052d828260405180602001604052806000815250610ed5565b6000828152600660205260409020610d0482826118fb565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b8080610d5057506001600160a01b03821615155b15610e12576000610d6084610b5f565b90506001600160a01b03831615801590610d8c5750826001600160a01b0316816001600160a01b031614155b8015610d9f5750610d9d8184610ae1565b155b15610dc85760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610597565b8115610e105783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60606000610e4f83610eec565b600101905060008167ffffffffffffffff811115610e6f57610e6f6114e3565b6040519080825280601f01601f191660200182016040528015610e99576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610ea357509392505050565b610edf8383610fc4565b6106c26000848484611029565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610f2b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f57576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610f7557662386f26fc10000830492506010015b6305f5e1008310610f8d576305f5e100830492506008015b6127108310610fa157612710830492506004015b60648310610fb3576064830492506002015b600a83106104615760010192915050565b6001600160a01b038216610fee57604051633250574960e11b815260006004820152602401610597565b6000610ffc83836000611153565b90506001600160a01b038116156106c2576040516339e3563760e11b815260006004820152602401610597565b6001600160a01b0383163b1561114d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061106b9033908890879087906004016119bb565b6020604051808303816000875af19250505080156110a6575060408051601f3d908101601f191682019092526110a3918101906119ee565b60015b61110f573d8080156110d4576040519150601f19603f3d011682016040523d82523d6000602084013e6110d9565b606091505b50805160000361110757604051633250574960e11b81526001600160a01b0385166004820152602401610597565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461114b57604051633250574960e11b81526001600160a01b0385166004820152602401610597565b505b50505050565b6000828152600260205260408120546001600160a01b03908116908316156111805761118081848661124c565b6001600160a01b038116156111be5761119d600085600080610d3c565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156111ed576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6112578383836112b0565b6106c2576001600160a01b03831661128557604051637e27328960e01b815260048101829052602401610597565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610597565b60006001600160a01b038316158015906109675750826001600160a01b0316846001600160a01b031614806112ea57506112ea8484610ae1565b806109675750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b03198116811461132957600080fd5b50565b60006020828403121561133e57600080fd5b8135610ccb81611313565b60005b8381101561136457818101518382015260200161134c565b50506000910152565b60008151808452611385816020860160208601611349565b601f01601f19169290920160200192915050565b602081526000610ccb602083018461136d565b6000602082840312156113be57600080fd5b5035919050565b6001600160a01b038116811461132957600080fd5b600080604083850312156113ed57600080fd5b82356113f8816113c5565b946020939093013593505050565b6020815260018060a01b03825116602082015260208201516040820152604082015160608201526000606083015160808084015261096760a084018261136d565b60008060006060848603121561145c57600080fd5b8335611467816113c5565b92506020840135611477816113c5565b929592945050506040919091013590565b60006020828403121561149a57600080fd5b8135610ccb816113c5565b600080604083850312156114b857600080fd5b82356114c3816113c5565b9150602083013580151581146114d857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611514576115146114e3565b604051601f8501601f19908116603f0116810190828211818310171561153c5761153c6114e3565b8160405280935085815286868601111561155557600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561158557600080fd5b8435611590816113c5565b935060208501356115a0816113c5565b925060408501359150606085013567ffffffffffffffff8111156115c357600080fd5b8501601f810187136115d457600080fd5b6115e3878235602084016114f9565b91505092959194509250565b60018060a01b038516815283602082015282604082015260806060820152600061161c608083018461136d565b9695505050505050565b60008060006060848603121561163b57600080fd5b8335611646816113c5565b9250602084013567ffffffffffffffff8082111561166357600080fd5b818601915086601f83011261167757600080fd5b611686878335602085016114f9565b9350604086013591508082111561169c57600080fd5b508401608081870312156116af57600080fd5b809150509250925092565b600080604083850312156116cd57600080fd5b82356116d8816113c5565b915060208301356114d8816113c5565b600181811c908216806116fc57607f821691505b60208210810361171c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000835161174a818460208801611349565b83519083019061175e818360208801611349565b01949350505050565b601f8211156106c257600081815260208120601f850160051c8101602086101561178e5750805b601f850160051c820191505b81811015610ad95782815560010161179a565b67ffffffffffffffff8311156117c5576117c56114e3565b6117d9836117d383546116e8565b83611767565b6000601f84116001811461180d57600085156117f55750838201355b600019600387901b1c1916600186901b17835561114b565b600083815260209020601f19861690835b8281101561183e578685013582556020948501946001909201910161181e565b508682101561185b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135611878816113c5565b81546001600160a01b0319166001600160a01b03919091161781556020820135600182015560408201356002820155606082013536839003601e190181126118bf57600080fd5b8201803567ffffffffffffffff8111156118d857600080fd5b6020820191508036038213156118ed57600080fd5b61114d8183600386016117ad565b815167ffffffffffffffff811115611915576119156114e3565b6119298161192384546116e8565b84611767565b602080601f83116001811461195e57600084156119465750858301515b600019600386901b1c1916600185901b178555610ad9565b600085815260208120601f198616915b8281101561198d5788860151825594840194600190910190840161196e565b50858210156119ab5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061161c9083018461136d565b600060208284031215611a0057600080fd5b8151610ccb8161131356fea2646970667358221220285cd2f1e7ddb9eeb31a4ed0849e17c7ff32f711838b7429e4f4cd6b9241d0d164736f6c63430008140033","contractName":"BountyToken"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC1155Ownable.ts b/src/interfaces/generated/abi/ERC1155Ownable.ts new file mode 100644 index 00000000..5aeca355 --- /dev/null +++ b/src/interfaces/generated/abi/ERC1155Ownable.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200185638038062001856833981016040819052620000349162000082565b8062000040816200005a565b5050600380546001600160a01b03191633179055620002b2565b6002620000688282620001e6565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200009657600080fd5b82516001600160401b0380821115620000ae57600080fd5b818501915085601f830112620000c357600080fd5b815181811115620000d857620000d86200006c565b604051601f8201601f19908116603f011681019083821181831017156200010357620001036200006c565b8160405282815288868487010111156200011c57600080fd5b600093505b8284101562000140578484018601518185018701529285019262000121565b600086848301015280965050505050505092915050565b600181811c908216806200016c57607f821691505b6020821081036200018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001e157600081815260208120601f850160051c81016020861015620001bc5750805b601f850160051c820191505b81811015620001dd57828155600101620001c8565b5050505b505050565b81516001600160401b038111156200020257620002026200006c565b6200021a8162000213845462000157565b8462000193565b602080601f831160018114620002525760008415620002395750858301515b600019600386901b1c1916600185901b178555620001dd565b600085815260208120601f198616915b82811015620002835788860151825594840194600190910190840162000262565b5085821015620002a25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61159480620002c26000396000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80634e1273f41161008c578063a22cb46511610066578063a22cb465146101d5578063e985e9c5146101e8578063f242432a146101fb578063f2fde38b1461020e57600080fd5b80634e1273f414610177578063731133e9146101975780638da5cb5b146101aa57600080fd5b8062fdd58e146100d357806301ffc9a7146100f957806302fe53051461011c5780630e89341c146101315780631f7fdffa146101515780632eb2c2d614610164575b600080fd5b6100e66100e1366004610cc9565b610221565b6040519081526020015b60405180910390f35b61010c610107366004610d09565b610249565b60405190151581526020016100f0565b61012f61012a366004610dcc565b610299565b005b61014461013f366004610e1d565b6102ad565b6040516100f09190610e7c565b61012f61015f366004610f3e565b610341565b61012f610172366004610fd7565b61035b565b61018a610185366004611081565b6103c7565b6040516100f0919061117c565b61012f6101a536600461118f565b61049c565b6003546101bd906001600160a01b031681565b6040516001600160a01b0390911681526020016100f0565b61012f6101e33660046111e4565b6104b0565b61010c6101f6366004611220565b6104bf565b61012f610209366004611253565b6104ed565b61012f61021c3660046112b8565b61054c565b6000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061027a57506001600160e01b031982166303a24d0760e21b145b8061024357506301ffc9a760e01b6001600160e01b0319831614610243565b6102a16105c3565b6102aa81610604565b50565b6060600280546102bc906112d3565b80601f01602080910402602001604051908101604052809291908181526020018280546102e8906112d3565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b50505050509050919050565b6103496105c3565b61035584848484610610565b50505050565b336001600160a01b038616811480159061037c575061037a86826104bf565b155b156103b25760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044015b60405180910390fd5b6103bf8686868686610648565b505050505050565b606081518351146103f85781518351604051635b05999160e01b8152600481019290925260248201526044016103a9565b6000835167ffffffffffffffff81111561041457610414610d2d565b60405190808252806020026020018201604052801561043d578160200160208202803683370190505b50905060005b84518110156104945760208082028601015161046790602080840287010151610221565b8282815181106104795761047961130d565b602090810291909101015261048d81611339565b9050610443565b509392505050565b6104a46105c3565b610355848484846106af565b6104bb33838361070c565b5050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b336001600160a01b038616811480159061050e575061050c86826104bf565b155b1561053f5760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044016103a9565b6103bf86868686866107a2565b6105546105c3565b6001600160a01b03811661056757600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146106025760405162461bcd60e51b815260206004820152600260248201526127a960f11b60448201526064016103a9565b565b60026104bb828261139d565b6001600160a01b03841661063a57604051632bfa23e760e11b8152600060048201526024016103a9565b610355600085858585610830565b6001600160a01b03841661067257604051632bfa23e760e11b8152600060048201526024016103a9565b6001600160a01b03851661069b57604051626a0d4560e21b8152600060048201526024016103a9565b6106a88585858585610830565b5050505050565b6001600160a01b0384166106d957604051632bfa23e760e11b8152600060048201526024016103a9565b604080516001808252602082018690528183019081526060820185905260808201909252906103bf600087848487610830565b6001600160a01b0382166107355760405162ced3e160e81b8152600060048201526024016103a9565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107cc57604051632bfa23e760e11b8152600060048201526024016103a9565b6001600160a01b0385166107f557604051626a0d4560e21b8152600060048201526024016103a9565b604080516001808252602082018690528183019081526060820185905260808201909252906108278787848487610830565b50505050505050565b61083c85858585610883565b6001600160a01b038416156106a85782513390600103610875576020848101519084015161086e838989858589610aa0565b50506103bf565b6103bf818787878787610bc4565b80518251146108b25781518151604051635b05999160e01b8152600481019290925260248201526044016103a9565b3360005b83518110156109c1576020818102858101820151908501909101516001600160a01b03881615610969576000828152602081815260408083206001600160a01b038c16845290915290205481811015610942576040516303dee4c560e01b81526001600160a01b038a1660048201526024810182905260448101839052606481018490526084016103a9565b6000838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b038716156109ae576000828152602081815260408083206001600160a01b038b168452909152812080548392906109a890849061145d565b90915550505b5050806109ba90611339565b90506108b6565b508251600103610a425760208301516000906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051610a33929190918252602082015260400190565b60405180910390a450506106a8565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610a91929190611470565b60405180910390a45050505050565b6001600160a01b0384163b156103bf5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610ae4908990899088908890889060040161149e565b6020604051808303816000875af1925050508015610b1f575060408051601f3d908101601f19168201909252610b1c918101906114e3565b60015b610b88573d808015610b4d576040519150601f19603f3d011682016040523d82523d6000602084013e610b52565b606091505b508051600003610b8057604051632bfa23e760e11b81526001600160a01b03861660048201526024016103a9565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461082757604051632bfa23e760e11b81526001600160a01b03861660048201526024016103a9565b6001600160a01b0384163b156103bf5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610c089089908990889088908890600401611500565b6020604051808303816000875af1925050508015610c43575060408051601f3d908101601f19168201909252610c40918101906114e3565b60015b610c71573d808015610b4d576040519150601f19603f3d011682016040523d82523d6000602084013e610b52565b6001600160e01b0319811663bc197c8160e01b1461082757604051632bfa23e760e11b81526001600160a01b03861660048201526024016103a9565b80356001600160a01b0381168114610cc457600080fd5b919050565b60008060408385031215610cdc57600080fd5b610ce583610cad565b946020939093013593505050565b6001600160e01b0319811681146102aa57600080fd5b600060208284031215610d1b57600080fd5b8135610d2681610cf3565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d6c57610d6c610d2d565b604052919050565b600067ffffffffffffffff831115610d8e57610d8e610d2d565b610da1601f8401601f1916602001610d43565b9050828152838383011115610db557600080fd5b828260208301376000602084830101529392505050565b600060208284031215610dde57600080fd5b813567ffffffffffffffff811115610df557600080fd5b8201601f81018413610e0657600080fd5b610e1584823560208401610d74565b949350505050565b600060208284031215610e2f57600080fd5b5035919050565b6000815180845260005b81811015610e5c57602081850181015186830182015201610e40565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610d266020830184610e36565b600067ffffffffffffffff821115610ea957610ea9610d2d565b5060051b60200190565b600082601f830112610ec457600080fd5b81356020610ed9610ed483610e8f565b610d43565b82815260059290921b84018101918181019086841115610ef857600080fd5b8286015b84811015610f135780358352918301918301610efc565b509695505050505050565b600082601f830112610f2f57600080fd5b610d2683833560208501610d74565b60008060008060808587031215610f5457600080fd5b610f5d85610cad565b9350602085013567ffffffffffffffff80821115610f7a57600080fd5b610f8688838901610eb3565b94506040870135915080821115610f9c57600080fd5b610fa888838901610eb3565b93506060870135915080821115610fbe57600080fd5b50610fcb87828801610f1e565b91505092959194509250565b600080600080600060a08688031215610fef57600080fd5b610ff886610cad565b945061100660208701610cad565b9350604086013567ffffffffffffffff8082111561102357600080fd5b61102f89838a01610eb3565b9450606088013591508082111561104557600080fd5b61105189838a01610eb3565b9350608088013591508082111561106757600080fd5b5061107488828901610f1e565b9150509295509295909350565b6000806040838503121561109457600080fd5b823567ffffffffffffffff808211156110ac57600080fd5b818501915085601f8301126110c057600080fd5b813560206110d0610ed483610e8f565b82815260059290921b840181019181810190898411156110ef57600080fd5b948201945b838610156111145761110586610cad565b825294820194908201906110f4565b9650508601359250508082111561112a57600080fd5b5061113785828601610eb3565b9150509250929050565b600081518084526020808501945080840160005b8381101561117157815187529582019590820190600101611155565b509495945050505050565b602081526000610d266020830184611141565b600080600080608085870312156111a557600080fd5b6111ae85610cad565b93506020850135925060408501359150606085013567ffffffffffffffff8111156111d857600080fd5b610fcb87828801610f1e565b600080604083850312156111f757600080fd5b61120083610cad565b91506020830135801515811461121557600080fd5b809150509250929050565b6000806040838503121561123357600080fd5b61123c83610cad565b915061124a60208401610cad565b90509250929050565b600080600080600060a0868803121561126b57600080fd5b61127486610cad565b945061128260208701610cad565b93506040860135925060608601359150608086013567ffffffffffffffff8111156112ac57600080fd5b61107488828901610f1e565b6000602082840312156112ca57600080fd5b610d2682610cad565b600181811c908216806112e757607f821691505b60208210810361130757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161134b5761134b611323565b5060010190565b601f82111561139857600081815260208120601f850160051c810160208610156113795750805b601f850160051c820191505b818110156103bf57828155600101611385565b505050565b815167ffffffffffffffff8111156113b7576113b7610d2d565b6113cb816113c584546112d3565b84611352565b602080601f83116001811461140057600084156113e85750858301515b600019600386901b1c1916600185901b1785556103bf565b600085815260208120601f198616915b8281101561142f57888601518255948401946001909101908401611410565b508582101561144d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561024357610243611323565b6040815260006114836040830185611141565b82810360208401526114958185611141565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906114d890830184610e36565b979650505050505050565b6000602082840312156114f557600080fd5b8151610d2681610cf3565b6001600160a01b0386811682528516602082015260a06040820181905260009061152c90830186611141565b828103606084015261153e8186611141565b905082810360808401526115528185610e36565b9897505050505050505056fea2646970667358221220f89441b6d0d4acd67c442bb995465bb284fc4ba22dadd2b436457068aa47d0ba64736f6c63430008140033","contractName":"ERC1155Ownable"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC20CappedToken.ts b/src/interfaces/generated/abi/ERC20CappedToken.ts new file mode 100644 index 00000000..7b1f7a83 --- /dev/null +++ b/src/interfaces/generated/abi/ERC20CappedToken.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_supplyCap","type":"uint256"},{"internalType":"address","name":"_distributionContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributionContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000ee138038062000ee1833981016040819052620000349162000336565b33848460036200004583826200045a565b5060046200005482826200045a565b5050506001600160a01b0381166200008757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200009281620000ae565b506007829055620000a4818362000100565b505050506200054e565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200012c5760405163ec442f0560e01b8152600060048201526024016200007e565b6200013a600083836200013e565b5050565b6001600160a01b0383166200016d57806002600082825462000161919062000526565b90915550620001e19050565b6001600160a01b03831660009081526020819052604090205481811015620001c25760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200007e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001ff576002805482900390556200021e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200026491815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200029957600080fd5b81516001600160401b0380821115620002b657620002b662000271565b604051601f8301601f19908116603f01168101908282118183101715620002e157620002e162000271565b81604052838152602092508683858801011115620002fe57600080fd5b600091505b8382101562000322578582018301518183018401529082019062000303565b600093810190920192909252949350505050565b600080600080608085870312156200034d57600080fd5b84516001600160401b03808211156200036557600080fd5b620003738883890162000287565b955060208701519150808211156200038a57600080fd5b50620003998782880162000287565b60408701516060880151919550935090506001600160a01b0381168114620003c057600080fd5b939692955090935050565b600181811c90821680620003e057607f821691505b6020821081036200040157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200045557600081815260208120601f850160051c81016020861015620004305750805b601f850160051c820191505b8181101562000451578281556001016200043c565b5050505b505050565b81516001600160401b0381111562000476576200047662000271565b6200048e81620004878454620003cb565b8462000407565b602080601f831160018114620004c65760008415620004ad5750858301515b600019600386901b1c1916600185901b17855562000451565b600085815260208120601f198616915b82811015620004f757888601518255948401946001909101908401620004d6565b5085821015620005165787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200054857634e487b7160e01b600052601160045260246000fd5b92915050565b610983806200055e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a082311161009757806395d89b411161006657806395d89b41146101fa578063a9059cbb14610202578063dd62ed3e14610215578063f2fde38b1461024e57600080fd5b806370a08231146101af578063715018a6146101d85780638da5cb5b146101e05780638f770ad0146101f157600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce5671461016057806340c10f191461016f5780635a4528c21461018457600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610261565b60405161010f91906107cd565b60405180910390f35b61012b610126366004610837565b6102f3565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610861565b61030d565b6040516012815260200161010f565b61018261017d366004610837565b610331565b005b600654610197906001600160a01b031681565b6040516001600160a01b03909116815260200161010f565b61013f6101bd36600461089d565b6001600160a01b031660009081526020819052604090205490565b6101826103bb565b6005546001600160a01b0316610197565b61013f60075481565b6101026103cf565b61012b610210366004610837565b6103de565b61013f6102233660046108bf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018261025c36600461089d565b6103ec565b606060038054610270906108f2565b80601f016020809104026020016040519081016040528092919081815260200182805461029c906108f2565b80156102e95780601f106102be576101008083540402835291602001916102e9565b820191906000526020600020905b8154815290600101906020018083116102cc57829003601f168201915b5050505050905090565b60003361030181858561042a565b60019150505b92915050565b60003361031b85828561043c565b6103268585856104ba565b506001949350505050565b610339610519565b6007548161034660025490565b610350919061092c565b11156103ad5760405162461bcd60e51b815260206004820152602160248201527f4552433230436170706564546f6b656e3a20737570706c79206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b6103b78282610546565b5050565b6103c3610519565b6103cd600061057c565b565b606060048054610270906108f2565b6000336103018185856104ba565b6103f4610519565b6001600160a01b03811661041e57604051631e4fbdf760e01b8152600060048201526024016103a4565b6104278161057c565b50565b61043783838360016105ce565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146104b457818110156104a557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103a4565b6104b4848484840360006105ce565b50505050565b6001600160a01b0383166104e457604051634b637e8f60e11b8152600060048201526024016103a4565b6001600160a01b03821661050e5760405163ec442f0560e01b8152600060048201526024016103a4565b6104378383836106a3565b6005546001600160a01b031633146103cd5760405163118cdaa760e01b81523360048201526024016103a4565b6001600160a01b0382166105705760405163ec442f0560e01b8152600060048201526024016103a4565b6103b7600083836106a3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105f85760405163e602df0560e01b8152600060048201526024016103a4565b6001600160a01b03831661062257604051634a1406b160e11b8152600060048201526024016103a4565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156104b457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161069591815260200190565b60405180910390a350505050565b6001600160a01b0383166106ce5780600260008282546106c3919061092c565b909155506107409050565b6001600160a01b038316600090815260208190526040902054818110156107215760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103a4565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661075c5760028054829003905561077b565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107c091815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107fa578581018301518582016040015282016107de565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461083257600080fd5b919050565b6000806040838503121561084a57600080fd5b6108538361081b565b946020939093013593505050565b60008060006060848603121561087657600080fd5b61087f8461081b565b925061088d6020850161081b565b9150604084013590509250925092565b6000602082840312156108af57600080fd5b6108b88261081b565b9392505050565b600080604083850312156108d257600080fd5b6108db8361081b565b91506108e96020840161081b565b90509250929050565b600181811c9082168061090657607f821691505b60208210810361092657634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561030757634e487b7160e01b600052601160045260246000fdfea26469706673582212207240e0cbb9cacd269d7d0709f0b1ad5564a3de202a3a4c6f02e9f218f960e99664736f6c63430008140033","contractName":"ERC20CappedToken"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC20Distribution.ts b/src/interfaces/generated/abi/ERC20Distribution.ts new file mode 100644 index 00000000..f22877fb --- /dev/null +++ b/src/interfaces/generated/abi/ERC20Distribution.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"TGEDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"distributions","outputs":[{"internalType":"uint256","name":"amountAllocated","type":"uint256"},{"internalType":"uint256","name":"currentAllocated","type":"uint256"},{"internalType":"uint256","name":"unlockDay","type":"uint256"},{"internalType":"uint256","name":"amountSent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc20","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDateDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"month","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"safeGuardAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_unlockDays","type":"uint256"}],"name":"setInitialDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setTGEDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_tokenAddress","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerTokenSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"year","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040526000600255600060035534801561001a57600080fd5b506000805460ff19169055338061004b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100548161005a565b506100b3565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b610d18806100c26000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806376093957116100a2578063b90c72ae11610071578063b90c72ae1461021a578063cb1287281461022d578063f2fde38b14610236578063f326971614610249578063f8a14f461461025457600080fd5b806376093957146101c8578063785e9e86146101d157806383e2ad63146101fc5780638da5cb5b1461020457600080fd5b80635c975abb116100de5780635c975abb1461018d578063702921f5146101a3578063715018a6146101ad57806372108452146101b557600080fd5b806326a4e8d2146101105780632d9b4b2514610125578063313ce5671461015d57806332a011031461017a575b600080fd5b61012361011e366004610b81565b610267565b005b610138610133366004610ba5565b610299565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b61016c670de0b6b3a764000081565b604051908152602001610154565b610123610188366004610bd1565b6102df565b60005460ff166040519015158152602001610154565b61016c62278d0081565b6101236102f4565b6101236101c3366004610bea565b610308565b61016c60035481565b6005546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610154565b610123610469565b60005461010090046001600160a01b03166101e4565b610123610228366004610b81565b610936565b61016c60025481565b610123610244366004610b81565b610a34565b61016c6301e1338081565b6101e4610262366004610bd1565b610a6f565b61026f610a99565b610277610acc565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600460205281600052604060002081815481106102b557600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919450925084565b6102e7610a99565b6102ef610acc565b600255565b6102fc610a99565b6103066000610af0565b565b610310610a99565b610318610acc565b6000805b60015481101561037457846001600160a01b03166001828154811061034357610343610c1f565b6000918252602090912001546001600160a01b03160361036257600191505b8061036c81610c4b565b91505061031c565b5060006040518060800160405280670de0b6b3a7640000866103969190610c64565b81526020016103ad670de0b6b3a764000087610c64565b81526020808201869052600060409283018190526001600160a01b038916815260048083528382208054600181810183559184529284902086519390920290910191825591840151918101919091559082015160028201556060820151600390910155905081610462576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0387161790555b5050505050565b610471610acc565b6002546000036104bf5760405162461bcd60e51b81526020600482015260146024820152731511d14819185d19481b9bdd081cd95d081e595d60621b60448201526064015b60405180910390fd5b60025442116105105760405162461bcd60e51b815260206004820152601860248201527f544745207374696c6c206861736e27742073746172746564000000000000000060448201526064016104b6565b62015180600354426105229190610c81565b1161056f5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063616c6c6564206f6e636520612064617900000060448201526064016104b6565b4260035560005b600154811015610933576000600460006001848154811061059957610599610c1f565b60009182526020808320909101546001600160a01b031683528281019390935260409182018120805483518186028101860190945280845292939092919084015b828210156106345783829060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382015481525050815260200190600101906105da565b50505050905060005b815181101561091e5781818151811061065857610658610c1f565b602002602001015160400151600254426106729190610c94565b11801561069c5750600082828151811061068e5761068e610c1f565b602002602001015160200151115b1561090c5760008282815181106106b5576106b5610c1f565b60200260200101516020015190508060046000600187815481106106db576106db610c1f565b60009182526020808320909101546001600160a01b03168352820192909252604001902080548490811061071157610711610c1f565b90600052602060002090600402016001015461072d9190610c81565b600460006001878154811061074457610744610c1f565b60009182526020808320909101546001600160a01b03168352820192909252604001902080548490811061077a5761077a610c1f565b9060005260206000209060040201600101819055508060046000600187815481106107a7576107a7610c1f565b60009182526020808320909101546001600160a01b0316835282019290925260400190208054849081106107dd576107dd610c1f565b9060005260206000209060040201600301546107f99190610c94565b600460006001878154811061081057610810610c1f565b60009182526020808320909101546001600160a01b03168352820192909252604001902080548490811061084657610846610c1f565b6000918252602090912060036004909202010155600554600180546001600160a01b039092169163a9059cbb91908790811061088457610884610c1f565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109019190610ca7565b61090a57600080fd5b505b8061091681610c4b565b91505061063d565b5050808061092b90610c4b565b915050610576565b50565b61093e610a99565b610946610b49565b6005546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90839083906370a0823190602401602060405180830381865afa158015610998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bc9190610cc9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2b9190610ca7565b61093357600080fd5b610a3c610a99565b6001600160a01b038116610a6657604051631e4fbdf760e01b8152600060048201526024016104b6565b61093381610af0565b60018181548110610a7f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b036101009091041633146103065760405163118cdaa760e01b81523360048201526024016104b6565b60005460ff16156103065760405163d93c066560e01b815260040160405180910390fd5b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005460ff1661030657604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b038116811461093357600080fd5b600060208284031215610b9357600080fd5b8135610b9e81610b6c565b9392505050565b60008060408385031215610bb857600080fd5b8235610bc381610b6c565b946020939093013593505050565b600060208284031215610be357600080fd5b5035919050565b600080600060608486031215610bff57600080fd5b8335610c0a81610b6c565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610c5d57610c5d610c35565b5060010190565b8082028115828204841417610c7b57610c7b610c35565b92915050565b81810381811115610c7b57610c7b610c35565b80820180821115610c7b57610c7b610c35565b600060208284031215610cb957600080fd5b81518015158114610b9e57600080fd5b600060208284031215610cdb57600080fd5b505191905056fea26469706673582212200f1c563b6a80e8320a293e5dcce62b4c4e835612b9ca6dcb1c50e7c9fb215a3064736f6c63430008140033","contractName":"ERC20Distribution"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC20Ownable.ts b/src/interfaces/generated/abi/ERC20Ownable.ts new file mode 100644 index 00000000..408fbae3 --- /dev/null +++ b/src/interfaces/generated/abi/ERC20Ownable.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"initialSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000e3838038062000e38833981016040819052620000349162000356565b338484600362000045838262000470565b50600462000054828262000470565b5050506001600160a01b0381166200008757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200009281620000ce565b508015620000a657620000a6338262000120565b506005805460ff909216600160a01b0260ff60a01b1990921691909117905550620005649050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200014c5760405163ec442f0560e01b8152600060048201526024016200007e565b6200015a600083836200015e565b5050565b6001600160a01b0383166200018d5780600260008282546200018191906200053c565b90915550620002019050565b6001600160a01b03831660009081526020819052604090205481811015620001e25760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200007e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200021f576002805482900390556200023e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200028491815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002b957600080fd5b81516001600160401b0380821115620002d657620002d662000291565b604051601f8301601f19908116603f0116810190828211818310171562000301576200030162000291565b816040528381526020925086838588010111156200031e57600080fd5b600091505b8382101562000342578582018301518183018401529082019062000323565b600093810190920192909252949350505050565b600080600080608085870312156200036d57600080fd5b84516001600160401b03808211156200038557600080fd5b6200039388838901620002a7565b95506020870151915080821115620003aa57600080fd5b50620003b987828801620002a7565b935050604085015160ff81168114620003d157600080fd5b6060959095015193969295505050565b600181811c90821680620003f657607f821691505b6020821081036200041757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200046b57600081815260208120601f850160051c81016020861015620004465750805b601f850160051c820191505b81811015620004675782815560010162000452565b5050505b505050565b81516001600160401b038111156200048c576200048c62000291565b620004a4816200049d8454620003e1565b846200041d565b602080601f831160018114620004dc5760008415620004c35750858301515b600019600386901b1c1916600185901b17855562000467565b600085815260208120601f198616915b828110156200050d57888601518255948401946001909101908401620004ec565b50858210156200052c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200055e57634e487b7160e01b600052601160045260246000fd5b92915050565b6108c480620005746000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea2646970667358221220c2b0043f8425c12db21566cd88dbdb7dacf96f521d8b4ee5c9ec84eee4e9ee3364736f6c63430008140033","contractName":"ERC20Ownable"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC20TokenLock.ts b/src/interfaces/generated/abi/ERC20TokenLock.ts new file mode 100644 index 00000000..a46c75a4 --- /dev/null +++ b/src/interfaces/generated/abi/ERC20TokenLock.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"address","name":"_erc20TokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxAmountToLockChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinAmountToLockChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"TokensLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawDate","type":"uint256"}],"name":"TokensReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"canRelease","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc20","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLockedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLockedTokensInfo","outputs":[{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedTokensMap","outputs":[{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAmountToLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAmountToLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"setMaxAmountToLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"setMinAmountToLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAmountStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405260006002556000600355600060045534801561001f57600080fd5b50604051610d01380380610d0183398101604081905261003e916100f6565b6000805460ff19169055338061006e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100778161009d565b50600180546001600160a01b0319166001600160a01b0392909216919091179055610126565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006020828403121561010857600080fd5b81516001600160a01b038116811461011f57600080fd5b9392505050565b610bcc806101356000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806380acddbd116100a2578063f2682c0411610071578063f2682c041461029b578063f2fde38b146102a4578063f3e49d96146102b7578063f851a44014610272578063fe961f61146102e657600080fd5b806380acddbd146101fd57806386d1a69f1461026a5780638da5cb5b14610272578063e959824f1461028857600080fd5b80636dfe789a116100de5780636dfe789a14610190578063715018a6146101bf578063785e9e86146101c957806380506457146101f457600080fd5b80631338736f146101105780635c975abb146101385780636b2d95d4146101435780636c53e4fe1461017d575b600080fd5b61012361011e366004610a9e565b6102ef565b60405190151581526020015b60405180910390f35b60005460ff16610123565b61016f610151366004610ac0565b6001600160a01b031660009081526005602052604090206002015490565b60405190815260200161012f565b61012361018b366004610af0565b6105c5565b61012361019e366004610ac0565b6001600160a01b031660009081526005602052604090206001015442101590565b6101c76106c4565b005b6001546101dc906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b61016f60035481565b61024f61020b366004610ac0565b6001600160a01b0316600090815260056020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292909190565b6040805193845260208401929092529082015260600161012f565b6101236106d8565b60005461010090046001600160a01b03166101dc565b610123610296366004610af0565b6108bd565b61016f60025481565b6101c76102b2366004610ac0565b6109b0565b61024f6102c5366004610ac0565b60056020526000908152604090208054600182015460029092015490919083565b61016f60045481565b60006102f96109ee565b60008311801561030b57506003548310155b801561031957506002548311155b6103615760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a59081d1bdad95b88185b5bdd5b9d60621b60448201526064015b60405180910390fd5b4282116103a35760405162461bcd60e51b815260206004820152601060248201526f496e76616c696420656e64206461746560801b6044820152606401610358565b33600090815260056020526040902060020154156103c3576103c3610b09565b600154604051636eb1769f60e11b815233600482015230602482015284916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104359190610b1f565b10156104835760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f75676820746f6b656e7320617070726f7665640000000000006044820152606401610358565b6001546040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156104da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe9190610b38565b6105405760405162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b6044820152606401610358565b3360009081526005602052604090204281556001810183905560020183905560045461056d908490610b70565b60045560408051338152602081018590524291810191909152606081018390527f90e20a62e0f2a608d33bd96a4e15cb853006a15caf4455f373b7b55de520b68c906080015b60405180910390a15060015b92915050565b60006105cf610a12565b60035482036106205760405162461bcd60e51b815260206004820152601f60248201527f446966666572656e7420746f6b656e20616d6f756e74207265717569726564006044820152606401610358565b6002548211156106725760405162461bcd60e51b815260206004820152601b60248201527f3c3d206d6178416d6f756e74546f4c6f636b20726571756972656400000000006044820152606401610358565b600380549083905560408051338152602081018390529081018490527f26cd3240aacd6d90dacd3d7c64ba6c98a2cd3e7fcf7f7251a8b11cde59b283c59060600160405180910390a150600192915050565b6106cc610a12565b6106d66000610a45565b565b336000908152600560205260408120600201546107375760405162461bcd60e51b815260206004820152601960248201527f7573657220686173206e6f206c6f636b656420746f6b656e73000000000000006044820152606401610358565b336000908152600560205260409020600101544210156107995760405162461bcd60e51b815260206004820152601f60248201527f746f6b656e732072656c656173652064617465206e6f742072656163686564006044820152606401610358565b33600090815260056020526040812060020180549190556004546107be908290610b83565b600490815560015460405163a9059cbb60e01b81523392810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610b38565b6108765760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610358565b6040805133815260208101839052428183015290517fc5c52c2a9175470464d5ea4429889e7df2ea88630a3d32f4d0d3d2d4486562109181900360600190a1600191505090565b60006108c7610a12565b60025482036109185760405162461bcd60e51b815260206004820152601f60248201527f446966666572656e7420746f6b656e20616d6f756e74207265717569726564006044820152606401610358565b60035482101561096a5760405162461bcd60e51b815260206004820152601b60248201527f3e3d206d696e416d6f756e74546f4c6f636b20726571756972656400000000006044820152606401610358565b600280549083905560408051338152602081018390529081018490527fa681f7266a89baea6aef96b2e31932f3746d3a6995846958e3de4279d9f41da4906060016105b3565b6109b8610a12565b6001600160a01b0381166109e257604051631e4fbdf760e01b815260006004820152602401610358565b6109eb81610a45565b50565b60005460ff16156106d65760405163d93c066560e01b815260040160405180910390fd5b6000546001600160a01b036101009091041633146106d65760405163118cdaa760e01b8152336004820152602401610358565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60008060408385031215610ab157600080fd5b50508035926020909101359150565b600060208284031215610ad257600080fd5b81356001600160a01b0381168114610ae957600080fd5b9392505050565b600060208284031215610b0257600080fd5b5035919050565b634e487b7160e01b600052600160045260246000fd5b600060208284031215610b3157600080fd5b5051919050565b600060208284031215610b4a57600080fd5b81518015158114610ae957600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105bf576105bf610b5a565b818103818111156105bf576105bf610b5a56fea2646970667358221220aca608d3ba851bd37d532cddd5123bc63f88cf6f5ee0302b4efab2a4188d456164736f6c63430008140033","contractName":"ERC20TokenLock"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC4626.ts b/src/interfaces/generated/abi/ERC4626.ts new file mode 100644 index 00000000..d13d8079 --- /dev/null +++ b/src/interfaces/generated/abi/ERC4626.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"contract IERC20","name":"asset_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60c06040523480156200001157600080fd5b50604051620015d1380380620015d1833981016040819052620000349162000237565b8181600362000044838262000350565b50600462000053828262000350565b505050600062000069846200008560201b60201c565b5050601260a0525050506001600160a01b031660805262000454565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b03871691620000ce916200041c565b600060405180830381855afa9150503d80600081146200010b576040519150601f19603f3d011682016040523d82523d6000602084013e62000110565b606091505b50915091508180156200012557506020815110155b156200015d576000818060200190518101906200014391906200043a565b905060ff81116200015b576001969095509350505050565b505b5060009485945092505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200019d57818101518382015260200162000183565b50506000910152565b600082601f830112620001b857600080fd5b81516001600160401b0380821115620001d557620001d56200016a565b604051601f8301601f19908116603f011681019082821181831017156200020057620002006200016a565b816040528381528660208588010111156200021a57600080fd5b6200022d84602083016020890162000180565b9695505050505050565b6000806000606084860312156200024d57600080fd5b83516001600160a01b03811681146200026557600080fd5b60208501519093506001600160401b03808211156200028357600080fd5b6200029187838801620001a6565b93506040860151915080821115620002a857600080fd5b50620002b786828701620001a6565b9150509250925092565b600181811c90821680620002d657607f821691505b602082108103620002f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034b57600081815260208120601f850160051c81016020861015620003265750805b601f850160051c820191505b81811015620003475782815560010162000332565b5050505b505050565b81516001600160401b038111156200036c576200036c6200016a565b62000384816200037d8454620002c1565b84620002fd565b602080601f831160018114620003bc5760008415620003a35750858301515b600019600386901b1c1916600185901b17855562000347565b600085815260208120601f198616915b82811015620003ed57888601518255948401946001909101908401620003cc565b50858210156200040c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516200043081846020870162000180565b9190910192915050565b6000602082840312156200044d57600080fd5b5051919050565b60805160a0516111426200048f600039600061021301526000818161024a015281816103c9015281816108e40152610a0c01526111426000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063ba08765211610097578063ce96cb7711610071578063ce96cb7714610352578063d905777e14610365578063dd62ed3e14610378578063ef8b30f71461033f57600080fd5b8063ba08765214610317578063c63d75b61461032a578063c6e6f5921461033f57600080fd5b806370a082311461029a57806394bf804d146102c357806395d89b41146102d6578063a9059cbb146102de578063b3d7f6b9146102f1578063b460af941461030457600080fd5b806323b872dd1161013057806323b872dd146101f9578063313ce5671461020c57806338d52e0f1461023d578063402d267d146102745780634cdad506146101a85780636e553f651461028757600080fd5b806301e1d1141461017857806306fdde031461019357806307a2d13a146101a8578063095ea7b3146101bb5780630a28a477146101de57806318160ddd146101f1575b600080fd5b6101806103b1565b6040519081526020015b60405180910390f35b61019b610441565b60405161018a9190610e84565b6101806101b6366004610ed2565b6104d3565b6101ce6101c9366004610f07565b6104e6565b604051901515815260200161018a565b6101806101ec366004610ed2565b6104fe565b600254610180565b6101ce610207366004610f31565b61050b565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161018a565b6040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016815260200161018a565b610180610282366004610f6d565b610531565b610180610295366004610f88565b61054f565b6101806102a8366004610f6d565b6001600160a01b031660009081526020819052604090205490565b6101806102d1366004610f88565b6105c7565b61019b6105e1565b6101ce6102ec366004610f07565b6105f0565b6101806102ff366004610ed2565b6105fe565b610180610312366004610fb4565b61060b565b610180610325366004610fb4565b610687565b610180610338366004610f6d565b5060001990565b61018061034d366004610ed2565b6106fb565b610180610360366004610f6d565b610708565b610180610373366004610f6d565b61072c565b610180610386366004610ff0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c919061101a565b905090565b60606003805461045090611033565b80601f016020809104026020016040519081016040528092919081815260200182805461047c90611033565b80156104c95780601f1061049e576101008083540402835291602001916104c9565b820191906000526020600020905b8154815290600101906020018083116104ac57829003601f168201915b5050505050905090565b60006104e082600061074a565b92915050565b6000336104f481858561077d565b5060019392505050565b60006104e082600161078f565b6000336105198582856107c1565b61052485858561083f565b60019150505b9392505050565b600061053b61089e565b6105465760006104e0565b60001992915050565b600061055a82610531565b8311156105ae5760405162461bcd60e51b815260206004820152601e60248201527f455243343632363a206465706f736974206d6f7265207468616e206d6178000060448201526064015b60405180910390fd5b60006105b9846106fb565b905061052a338486846108b8565b6000806105d3846105fe565b905061052a338483876108b8565b60606004805461045090611033565b6000336104f481858561083f565b60006104e082600161074a565b600061061682610708565b8411156106655760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d61780060448201526064016105a5565b6000610670856104fe565b905061067f33858588856109b8565b949350505050565b60006106928261072c565b8411156106e15760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d617800000060448201526064016105a5565b60006106ec856104d3565b905061067f33858584896109b8565b60006104e082600061078f565b6001600160a01b0381166000908152602081905260408120546104e090600061074a565b6001600160a01b0381166000908152602081905260408120546104e0565b60008061075660025490565b90508015610777576107726107696103b1565b85908386610ae1565b61067f565b8361067f565b61078a8383836001610b32565b505050565b60008061079b60025490565b90508315806107a8575080155b61077757610772816107b86103b1565b86919086610ae1565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610839578181101561082a57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016105a5565b61083984848484036000610b32565b50505050565b6001600160a01b03831661086957604051634b637e8f60e11b8152600060048201526024016105a5565b6001600160a01b0382166108935760405163ec442f0560e01b8152600060048201526024016105a5565b61078a838383610bf9565b6000806108a96103b1565b118061043c5750506002541590565b6040516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303816000875af115801561092d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610951919061106d565b5061095c8382610d23565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516109aa929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b0316146109dc576109dc8386836107c1565b6109e68382610d5d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a79919061106d565b50826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610ad2929190918252602082015260400190565b60405180910390a45050505050565b600080610aef868686610d93565b9050610afa83610e57565b8015610b16575060008480610b1157610b1161108f565b868809115b15610b2957610b266001826110a5565b90505b95945050505050565b6001600160a01b038416610b5c5760405163e602df0560e01b8152600060048201526024016105a5565b6001600160a01b038316610b8657604051634a1406b160e11b8152600060048201526024016105a5565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561083957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109aa91815260200190565b6001600160a01b038316610c24578060026000828254610c1991906110a5565b90915550610c969050565b6001600160a01b03831660009081526020819052604090205481811015610c775760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016105a5565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610cb257600280548290039055610cd1565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d1691815260200190565b60405180910390a3505050565b6001600160a01b038216610d4d5760405163ec442f0560e01b8152600060048201526024016105a5565b610d5960008383610bf9565b5050565b6001600160a01b038216610d8757604051634b637e8f60e11b8152600060048201526024016105a5565b610d5982600083610bf9565b6000838302816000198587098281108382030391505080600003610dca57838281610dc057610dc061108f565b049250505061052a565b808411610dea5760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006002826003811115610e6d57610e6d6110c6565b610e7791906110dc565b60ff166001149050919050565b600060208083528351808285015260005b81811015610eb157858101830151858201604001528201610e95565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610ee457600080fd5b5035919050565b80356001600160a01b0381168114610f0257600080fd5b919050565b60008060408385031215610f1a57600080fd5b610f2383610eeb565b946020939093013593505050565b600080600060608486031215610f4657600080fd5b610f4f84610eeb565b9250610f5d60208501610eeb565b9150604084013590509250925092565b600060208284031215610f7f57600080fd5b61052a82610eeb565b60008060408385031215610f9b57600080fd5b82359150610fab60208401610eeb565b90509250929050565b600080600060608486031215610fc957600080fd5b83359250610fd960208501610eeb565b9150610fe760408501610eeb565b90509250925092565b6000806040838503121561100357600080fd5b61100c83610eeb565b9150610fab60208401610eeb565b60006020828403121561102c57600080fd5b5051919050565b600181811c9082168061104757607f821691505b60208210810361106757634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561107f57600080fd5b8151801515811461052a57600080fd5b634e487b7160e01b600052601260045260246000fd5b808201808211156104e057634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060ff8316806110fd57634e487b7160e01b600052601260045260246000fd5b8060ff8416069150509291505056fea26469706673582212205adc04a34f8c36c6faf2a9d4b890e7109d02b41d8e6d6344384e225ee663b85a64736f6c63430008140033","contractName":"ERC4626"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC721Collectibles.ts b/src/interfaces/generated/abi/ERC721Collectibles.ts new file mode 100644 index 00000000..0e9e3b11 --- /dev/null +++ b/src/interfaces/generated/abi/ERC721Collectibles.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"limitedAmount","type":"uint256"},{"internalType":"contract ERC20","name":"_purchaseToken","type":"address"},{"internalType":"address","name":"baseFeeAddress","type":"address"},{"internalType":"address","name":"feeAddress","type":"address"},{"internalType":"address","name":"otherAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"openedPacks","type":"uint256"}],"name":"Opening","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PURCHASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseFeeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_closed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_currentTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_openedPacks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_otherAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_otherShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pricePerPack","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_purchaseToken","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"alreadyMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getRegisteredIDs","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIdToMint","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"openPack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"registeredIDs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"registeredIDsArray","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"otherAddress","type":"address"}],"name":"setOtherAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPricePerPack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"purchaseToken","type":"address"}],"name":"setPurchaseTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeShare","type":"uint256"},{"internalType":"uint256","name":"otherShare","type":"uint256"}],"name":"setShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x6004805460ff60a01b191690556103e8600555670de0b6b3a76400006007556001600b556063600c556000600d819055600a600e55600f805460ff19169055601081905560a060405260809081526018906200005c9082620001dd565b503480156200006a57600080fd5b5060405162002550380380620025508339810160408190526200008d9162000371565b60008054336001600160a01b0319918216179091556001805482166001600160a01b0387811691909117909155600280548316868316179055600380548316858316179055600480549092169083161790558686858585858a801562000101576004805460ff60a01b1916600160a01b1790555b600655506011925062000119915084905082620001dd565b506012620001288282620001dd565b505050505050505050506200043c565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200016357607f821691505b6020821081036200018457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d857600081815260208120601f850160051c81016020861015620001b35750805b601f850160051c820191505b81811015620001d457828155600101620001bf565b5050505b505050565b81516001600160401b03811115620001f957620001f962000138565b62000211816200020a84546200014e565b846200018a565b602080601f831160018114620002495760008415620002305750858301515b600019600386901b1c1916600185901b178555620001d4565b600085815260208120601f198616915b828110156200027a5788860151825594840194600190910190840162000259565b5085821015620002995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082601f830112620002bb57600080fd5b81516001600160401b0380821115620002d857620002d862000138565b604051601f8301601f19908116603f0116810190828211818310171562000303576200030362000138565b816040528381526020925086838588010111156200032057600080fd5b600091505b8382101562000344578582018301518183018401529082019062000325565b600093810190920192909252949350505050565b6001600160a01b03811681146200036e57600080fd5b50565b600080600080600080600060e0888a0312156200038d57600080fd5b87516001600160401b0380821115620003a557600080fd5b620003b38b838c01620002a9565b985060208a0151915080821115620003ca57600080fd5b50620003d98a828b01620002a9565b965050604088015194506060880151620003f38162000358565b6080890151909450620004068162000358565b60a0890151909350620004198162000358565b60c08901519092506200042c8162000358565b8091505092959891949750929550565b612104806200044c6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80637146bd081161015c578063b7365f1f116100ce578063e985e9c511610087578063e985e9c51461057e578063eb8800d014610591578063f24a9e4e1461059a578063f2fde38b146105a3578063f4d36986146105b6578063f83d08ba146105c957600080fd5b8063b7365f1f14610516578063b88d4fde14610539578063c3a9896d1461054c578063c87b56dd14610555578063c963483c14610568578063dd7c5e541461057157600080fd5b80639456b232116101205780639456b232146104ba57806395d89b41146104cd57806398bdd803146104d5578063a0712d68146104e8578063a22cb465146104fb578063a69df4b51461050e57600080fd5b80637146bd0814610479578063759b2b3c14610482578063790411be1461048b5780638705fcd4146104945780638da5cb5b146104a757600080fd5b80632aca3e7d116101f557806353facd01116101b957806353facd011461041c57806355f804b3146104255780636352211e1461043857806369c7d8a31461044b5780636c0360eb1461045e57806370a082311461046657600080fd5b80632aca3e7d146103b05780632c686030146103c35780632f80f750146103e357806342842e0e146103f657806350a88c7e1461040957600080fd5b8063081812fc11610247578063081812fc14610321578063095ea7b314610334578063162094c4146103495780631e14a5331461035c57806323b872dd1461038a578063298489d21461039d57600080fd5b80630119b740146102845780630135f740146102ad57806301d243a6146102d857806301ffc9a7146102f957806306fdde031461030c575b600080fd5b60045461029890600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b6003546102c0906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b6102eb6102e6366004611a7a565b6105d1565b6040519081526020016102a4565b610298610307366004611abc565b610602565b61031461062d565b6040516102a49190611b29565b6102c061032f366004611b3c565b6106bf565b610347610342366004611a7a565b6106e8565b005b610347610357366004611c01565b6106f7565b61029861036a366004611a7a565b600860209081526000928352604080842090915290825290205460ff1681565b610347610398366004611c48565b610709565b6103476103ab366004611c89565b610799565b6103476103be366004611ca6565b6107c3565b6103d66103d1366004611c89565b610831565b6040516102a49190611cc8565b6004546102c0906001600160a01b031681565b610347610404366004611c48565b61089d565b610347610417366004611b3c565b6108bd565b6102eb600b5481565b610347610433366004611d0c565b6108c9565b6102c0610446366004611b3c565b6108dd565b6001546102c0906001600160a01b031681565b6103146108e8565b6102eb610474366004611c89565b6108f7565b6102eb600e5481565b6102eb60065481565b6102eb60075481565b6103476104a2366004611c89565b61093f565b6000546102c0906001600160a01b031681565b6002546102c0906001600160a01b031681565b610314610969565b6103476104e3366004611b3c565b610978565b6103476104f6366004611b3c565b610985565b610347610509366004611d4f565b610acf565b610347610ada565b610298610524366004611b3c565b600a6020526000908152604090205460ff1681565b610347610547366004611d88565b610aee565b6102eb600c5481565b610314610563366004611b3c565b610b05565b6102eb60055481565b600f546102989060ff1681565b61029861058c366004611e08565b610c09565b6102eb60105481565b6102eb600d5481565b6103476105b1366004611c89565b610c37565b6103476105c4366004611c89565b610cad565b610347610cd7565b600960205281600052604060002081815481106105ed57600080fd5b90600052602060002001600091509150505481565b60006001600160e01b03198216632483248360e11b1480610627575061062782610cee565b92915050565b60606011805461063c90611e36565b80601f016020809104026020016040519081016040528092919081815260200182805461066890611e36565b80156106b55780601f1061068a576101008083540402835291602001916106b5565b820191906000526020600020905b81548152906001019060200180831161069857829003601f168201915b5050505050905090565b60006106ca82610d3e565b506000828152601560205260409020546001600160a01b0316610627565b6106f3828233610d77565b5050565b6106ff610d84565b6106f38282610dc5565b6001600160a01b03821661073857604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610745838333610e15565b9050836001600160a01b0316816001600160a01b031614610793576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161072f565b50505050565b6107a1610d84565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6107cb610d84565b600b546107d88383611e86565b6107e29190611e86565b6064146108295760405162461bcd60e51b81526020600482015260156024820152740446f65736e27742061646420757020746f2031303605c1b604482015260640161072f565b600d55600c55565b6001600160a01b03811660009081526009602090815260409182902080548351818402810184019094528084526060939283018282801561089157602002820191906000526020600020905b81548152602001906001019080831161087d575b50505050509050919050565b6108b883838360405180602001604052806000815250610aee565b505050565b6108c681610f0e565b50565b6108d1610d84565b60186106f38282611ee7565b600061062782610d3e565b60606108f26111e4565b905090565b60006001600160a01b038216610923576040516322718ad960e21b81526000600482015260240161072f565b506001600160a01b031660009081526014602052604090205490565b610947610d84565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60606012805461063c90611e36565b610980610d84565b600755565b6005548111156109d75760405162461bcd60e51b815260206004820152601760248201527f546f6b656e204964206e6f742072656769737465726564000000000000000000604482015260640161072f565b33600090815260086020908152604080832084845290915290205460ff16610a5c5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e20776173206e6f742072656769737465726564206f72206e6f74206044820152713a3432903934b3b43a333ab61037bbb732b960711b606482015260840161072f565b6000818152600a602052604090205460ff1615610aac5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481b5a5b9d195960921b604482015260640161072f565b6000818152600a60205260409020805460ff191660011790556108c633826111f3565b6106f333838361120d565b610ae2610d84565b600f805460ff19169055565b610af9848484610709565b610793848484846112ac565b6060610b1082610d3e565b5060008281526017602052604081208054610b2a90611e36565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5690611e36565b8015610ba35780601f10610b7857610100808354040283529160200191610ba3565b820191906000526020600020905b815481529060010190602001808311610b8657829003601f168201915b505050505090506000610bb46111e4565b90508051600003610bc6575092915050565b815115610bf8578082604051602001610be0929190611fa7565b60405160208183030381529060405292505050919050565b610c01846113d5565b949350505050565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205460ff1690565b610c3f610d84565b6001600160a01b038116610c5257600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610cb5610d84565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610cdf610d84565b600f805460ff19166001179055565b60006001600160e01b031982166380ac58cd60e01b1480610d1f57506001600160e01b03198216635b5e139f60e01b145b8061062757506301ffc9a760e01b6001600160e01b0319831614610627565b6000818152601360205260408120546001600160a01b03168061062757604051637e27328960e01b81526004810184905260240161072f565b6108b8838383600161143d565b6000546001600160a01b03163314610dc35760405162461bcd60e51b815260206004820152600260248201526127a960f11b604482015260640161072f565b565b6000828152601760205260409020610ddd8282611ee7565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6000828152601360205260408120546001600160a01b0390811690831615610e4257610e42818486611543565b6001600160a01b03811615610e8057610e5f60008560008061143d565b6001600160a01b038116600090815260146020526040902080546000190190555b6001600160a01b03851615610eaf576001600160a01b0385166000908152601460205260409020805460010190555b60008481526013602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600f5460ff1615610f545760405162461bcd60e51b815260206004820152601060248201526f13dc195b995c881a5cc81b1bd8dad95960821b604482015260640161072f565b600754600090610f6490836115a7565b600154604051636eb1769f60e11b81523360048201523060248201529193508392506001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611fd6565b10156110285760405162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f756768206d6f6e657920706572207061636b00000000000000604482015260640161072f565b600e54339083111561107c5760405162461bcd60e51b815260206004820152601b60248201527f4d61782070757263686173652070657220747820726561636865640000000000604482015260640161072f565b600454600160a01b900460ff16156110ed578260105461109c9190611e86565b60065410156110ed5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206f66207061636b73206e6f7420617661696c61626c65000000604482015260640161072f565b6110f781836115f2565b806001600160a01b03167f836ddd803a6e03cf1f1512425a9f88798f8287a3b75501d3c552810c8b1142d78460105460405161113d929190918252602082015260400190565b60405180910390a282601060008282546111579190611e86565b90915550506005545b8360055461116e9190611e86565b8110156111c7573360008181526008602090815260408083208584528252808320805460ff19166001908117909155938352600982528220805493840181558252902001819055806111bf81611fef565b915050611160565b5082600560008282546111da9190611e86565b9091555050505050565b60606018805461063c90611e36565b6106f382826040518060200160405280600081525061181b565b6001600160a01b03821661123f57604051630b61174360e31b81526001600160a01b038316600482015260240161072f565b6001600160a01b03838116600081815260166020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561079357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906112ee903390889087908790600401612008565b6020604051808303816000875af1925050508015611329575060408051601f3d908101601f1916820190925261132691810190612045565b60015b611392573d808015611357576040519150601f19603f3d011682016040523d82523d6000602084013e61135c565b606091505b50805160000361138a57604051633250574960e11b81526001600160a01b038516600482015260240161072f565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146113ce57604051633250574960e11b81526001600160a01b038516600482015260240161072f565b5050505050565b60606113e082610d3e565b5060006113eb6111e4565b9050600081511161140b5760405180602001604052806000815250611436565b8061141584611832565b604051602001611426929190611fa7565b6040516020818303038152906040525b9392505050565b808061145157506001600160a01b03821615155b1561151357600061146184610d3e565b90506001600160a01b0383161580159061148d5750826001600160a01b0316816001600160a01b031614155b80156114a0575061149e8184610c09565b155b156114c95760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161072f565b81156115115783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260156020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61154e8383836118c5565b6108b8576001600160a01b03831661157c57604051637e27328960e01b81526004810182905260240161072f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161072f565b600080836000036115be57506001905060006115eb565b838302838582816115d1576115d1612062565b04146115e45760008092509250506115eb565b6001925090505b9250929050565b600154600254600b546001600160a01b03928316926323b872dd92869291169060649061161f9087612078565b611629919061208f565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801561167d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a191906120b1565b50600c541561175b57600154600354600c546001600160a01b03928316926323b872dd9286929116906064906116d79087612078565b6116e1919061208f565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611735573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175991906120b1565b505b6004546001600160a01b0316156106f357600154600454600d546001600160a01b03928316926323b872dd9286929116906064906117999087612078565b6117a3919061208f565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b891906120b1565b6118258383611928565b6108b860008484846112ac565b6060600061183f8361198d565b600101905060008167ffffffffffffffff81111561185f5761185f611b55565b6040519080825280601f01601f191660200182016040528015611889576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461189357509392505050565b60006001600160a01b03831615801590610c015750826001600160a01b0316846001600160a01b031614806118ff57506118ff8484610c09565b80610c015750506000908152601560205260409020546001600160a01b03908116911614919050565b6001600160a01b03821661195257604051633250574960e11b81526000600482015260240161072f565b600061196083836000610e15565b90506001600160a01b038116156108b8576040516339e3563760e11b81526000600482015260240161072f565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119cc5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106119f8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a1657662386f26fc10000830492506010015b6305f5e1008310611a2e576305f5e100830492506008015b6127108310611a4257612710830492506004015b60648310611a54576064830492506002015b600a83106106275760010192915050565b6001600160a01b03811681146108c657600080fd5b60008060408385031215611a8d57600080fd5b8235611a9881611a65565b946020939093013593505050565b6001600160e01b0319811681146108c657600080fd5b600060208284031215611ace57600080fd5b813561143681611aa6565b60005b83811015611af4578181015183820152602001611adc565b50506000910152565b60008151808452611b15816020860160208601611ad9565b601f01601f19169290920160200192915050565b6020815260006114366020830184611afd565b600060208284031215611b4e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611b8657611b86611b55565b604051601f8501601f19908116603f01168101908282118183101715611bae57611bae611b55565b81604052809350858152868686011115611bc757600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112611bf257600080fd5b61143683833560208501611b6b565b60008060408385031215611c1457600080fd5b82359150602083013567ffffffffffffffff811115611c3257600080fd5b611c3e85828601611be1565b9150509250929050565b600080600060608486031215611c5d57600080fd5b8335611c6881611a65565b92506020840135611c7881611a65565b929592945050506040919091013590565b600060208284031215611c9b57600080fd5b813561143681611a65565b60008060408385031215611cb957600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015611d0057835183529284019291840191600101611ce4565b50909695505050505050565b600060208284031215611d1e57600080fd5b813567ffffffffffffffff811115611d3557600080fd5b610c0184828501611be1565b80151581146108c657600080fd5b60008060408385031215611d6257600080fd5b8235611d6d81611a65565b91506020830135611d7d81611d41565b809150509250929050565b60008060008060808587031215611d9e57600080fd5b8435611da981611a65565b93506020850135611db981611a65565b925060408501359150606085013567ffffffffffffffff811115611ddc57600080fd5b8501601f81018713611ded57600080fd5b611dfc87823560208401611b6b565b91505092959194509250565b60008060408385031215611e1b57600080fd5b8235611e2681611a65565b91506020830135611d7d81611a65565b600181811c90821680611e4a57607f821691505b602082108103611e6a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561062757610627611e70565b601f8211156108b857600081815260208120601f850160051c81016020861015611ec05750805b601f850160051c820191505b81811015611edf57828155600101611ecc565b505050505050565b815167ffffffffffffffff811115611f0157611f01611b55565b611f1581611f0f8454611e36565b84611e99565b602080601f831160018114611f4a5760008415611f325750858301515b600019600386901b1c1916600185901b178555611edf565b600085815260208120601f198616915b82811015611f7957888601518255948401946001909101908401611f5a565b5085821015611f975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351611fb9818460208801611ad9565b835190830190611fcd818360208801611ad9565b01949350505050565b600060208284031215611fe857600080fd5b5051919050565b60006001820161200157612001611e70565b5060010190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061203b90830184611afd565b9695505050505050565b60006020828403121561205757600080fd5b815161143681611aa6565b634e487b7160e01b600052601260045260246000fd5b808202811582820484141761062757610627611e70565b6000826120ac57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156120c357600080fd5b815161143681611d4156fea2646970667358221220410571c6338a6e2f01495fd48262e64bb795a157cd45695ba457c2ab5228761064736f6c63430008140033","contractName":"ERC721Collectibles"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/ERC721Standard.ts b/src/interfaces/generated/abi/ERC721Standard.ts new file mode 100644 index 00000000..800d5c39 --- /dev/null +++ b/src/interfaces/generated/abi/ERC721Standard.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200144f3803806200144f833981016040819052620000349162000136565b818160006200004483826200022f565b5060016200005382826200022f565b5050600680546001600160a01b0319163317905550620002fb915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200009957600080fd5b81516001600160401b0380821115620000b657620000b662000071565b604051601f8301601f19908116603f01168101908282118183101715620000e157620000e162000071565b81604052838152602092508683858801011115620000fe57600080fd5b600091505b8382101562000122578582018301518183018401529082019062000103565b600093810190920192909252949350505050565b600080604083850312156200014a57600080fd5b82516001600160401b03808211156200016257600080fd5b620001708683870162000087565b935060208501519150808211156200018757600080fd5b50620001968582860162000087565b9150509250929050565b600181811c90821680620001b557607f821691505b602082108103620001d657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022a57600081815260208120601f850160051c81016020861015620002055750805b601f850160051c820191505b81811015620002265782815560010162000211565b5050505b505050565b81516001600160401b038111156200024b576200024b62000071565b62000263816200025c8454620001a0565b84620001dc565b602080601f8311600181146200029b5760008415620002825750858301515b600019600386901b1c1916600185901b17855562000226565b600085815260208120601f198616915b82811015620002cc57888601518255948401946001909101908401620002ab565b5085821015620002eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611144806200030b6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb46514610228578063b88d4fde1461023b578063c87b56dd1461024e578063e985e9c514610261578063f2fde38b1461027457600080fd5b806370a08231146101d95780638da5cb5b146101fa57806394d008ef1461020d57806395d89b411461022057600080fd5b806323b872dd116100de57806323b872dd1461018d57806340c10f19146101a057806342842e0e146101b35780636352211e146101c657600080fd5b806301ffc9a71461011057806306fdde0314610138578063081812fc1461014d578063095ea7b314610178575b600080fd5b61012361011e366004610d44565b610287565b60405190151581526020015b60405180910390f35b6101406102d9565b60405161012f9190610db1565b61016061015b366004610dc4565b61036b565b6040516001600160a01b03909116815260200161012f565b61018b610186366004610df9565b610394565b005b61018b61019b366004610e23565b6103a3565b61018b6101ae366004610df9565b610433565b61018b6101c1366004610e23565b610445565b6101606101d4366004610dc4565b610465565b6101ec6101e7366004610e5f565b610470565b60405190815260200161012f565b600654610160906001600160a01b031681565b61018b61021b366004610f1d565b6104b8565b6101406104cb565b61018b610236366004610f74565b6104da565b61018b610249366004610fb0565b6104e5565b61014061025c366004610dc4565b6104fc565b61012361026f366004611018565b610571565b61018b610282366004610e5f565b61059f565b60006001600160e01b031982166380ac58cd60e01b14806102b857506001600160e01b03198216635b5e139f60e01b145b806102d357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102e89061104b565b80601f01602080910402602001604051908101604052809291908181526020018280546103149061104b565b80156103615780601f1061033657610100808354040283529160200191610361565b820191906000526020600020905b81548152906001019060200180831161034457829003601f168201915b5050505050905090565b600061037682610616565b506000828152600460205260409020546001600160a01b03166102d3565b61039f82823361064f565b5050565b6001600160a01b0382166103d257604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103df83833361065c565b9050836001600160a01b0316816001600160a01b03161461042d576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103c9565b50505050565b61043b610755565b61039f8282610796565b610460838383604051806020016040528060008152506104e5565b505050565b60006102d382610616565b60006001600160a01b03821661049c576040516322718ad960e21b8152600060048201526024016103c9565b506001600160a01b031660009081526003602052604090205490565b6104c0610755565b6104608383836107ac565b6060600180546102e89061104b565b61039f3383836107c3565b6104f08484846103a3565b61042d84848484610862565b606061050782610616565b50600061051f60408051602081019091526000815290565b9050600081511161053f576040518060200160405280600081525061056a565b806105498461098b565b60405160200161055a929190611085565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6105a7610755565b6001600160a01b0381166105ba57600080fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260408120546001600160a01b0316806102d357604051637e27328960e01b8152600481018490526024016103c9565b6104608383836001610a1e565b6000828152600260205260408120546001600160a01b039081169083161561068957610689818486610b24565b6001600160a01b038116156106c7576106a6600085600080610a1e565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156106f6576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146107945760405162461bcd60e51b815260206004820152600260248201526127a960f11b60448201526064016103c9565b565b61039f8282604051806020016040528060008152505b6107b68383610b88565b6104606000848484610862565b6001600160a01b0382166107f557604051630b61174360e31b81526001600160a01b03831660048201526024016103c9565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561042d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906108a49033908890879087906004016110b4565b6020604051808303816000875af19250505080156108df575060408051601f3d908101601f191682019092526108dc918101906110f1565b60015b610948573d80801561090d576040519150601f19603f3d011682016040523d82523d6000602084013e610912565b606091505b50805160000361094057604051633250574960e11b81526001600160a01b03851660048201526024016103c9565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461098457604051633250574960e11b81526001600160a01b03851660048201526024016103c9565b5050505050565b6060600061099883610bed565b600101905060008167ffffffffffffffff8111156109b8576109b8610e7a565b6040519080825280601f01601f1916602001820160405280156109e2576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846109ec57509392505050565b8080610a3257506001600160a01b03821615155b15610af4576000610a4284610616565b90506001600160a01b03831615801590610a6e5750826001600160a01b0316816001600160a01b031614155b8015610a815750610a7f8184610571565b155b15610aaa5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103c9565b8115610af25783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610b2f838383610cc5565b610460576001600160a01b038316610b5d57604051637e27328960e01b8152600481018290526024016103c9565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103c9565b6001600160a01b038216610bb257604051633250574960e11b8152600060048201526024016103c9565b6000610bc08383600061065c565b90506001600160a01b03811615610460576040516339e3563760e11b8152600060048201526024016103c9565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c2c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c58576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c7657662386f26fc10000830492506010015b6305f5e1008310610c8e576305f5e100830492506008015b6127108310610ca257612710830492506004015b60648310610cb4576064830492506002015b600a83106102d35760010192915050565b60006001600160a01b03831615801590610d235750826001600160a01b0316846001600160a01b03161480610cff5750610cff8484610571565b80610d2357506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610d4157600080fd5b50565b600060208284031215610d5657600080fd5b813561056a81610d2b565b60005b83811015610d7c578181015183820152602001610d64565b50506000910152565b60008151808452610d9d816020860160208601610d61565b601f01601f19169290920160200192915050565b60208152600061056a6020830184610d85565b600060208284031215610dd657600080fd5b5035919050565b80356001600160a01b0381168114610df457600080fd5b919050565b60008060408385031215610e0c57600080fd5b610e1583610ddd565b946020939093013593505050565b600080600060608486031215610e3857600080fd5b610e4184610ddd565b9250610e4f60208501610ddd565b9150604084013590509250925092565b600060208284031215610e7157600080fd5b61056a82610ddd565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ea157600080fd5b813567ffffffffffffffff80821115610ebc57610ebc610e7a565b604051601f8301601f19908116603f01168101908282118183101715610ee457610ee4610e7a565b81604052838152866020858801011115610efd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610f3257600080fd5b610f3b84610ddd565b925060208401359150604084013567ffffffffffffffff811115610f5e57600080fd5b610f6a86828701610e90565b9150509250925092565b60008060408385031215610f8757600080fd5b610f9083610ddd565b915060208301358015158114610fa557600080fd5b809150509250929050565b60008060008060808587031215610fc657600080fd5b610fcf85610ddd565b9350610fdd60208601610ddd565b925060408501359150606085013567ffffffffffffffff81111561100057600080fd5b61100c87828801610e90565b91505092959194509250565b6000806040838503121561102b57600080fd5b61103483610ddd565b915061104260208401610ddd565b90509250929050565b600181811c9082168061105f57607f821691505b60208210810361107f57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611097818460208801610d61565b8351908301906110ab818360208801610d61565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e790830184610d85565b9695505050505050565b60006020828403121561110357600080fd5b815161056a81610d2b56fea2646970667358221220cd26c8535f092d923163556be182d2ec61dcf8fbffbd39e504ae07f3b96dbe7364736f6c63430008140033","contractName":"ERC721Standard"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/Governed.ts b/src/interfaces/generated/abi/Governed.ts new file mode 100644 index 00000000..83e7bc61 --- /dev/null +++ b/src/interfaces/generated/abi/Governed.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorTransferred","type":"event"},{"inputs":[],"name":"_governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_proposedGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"proposedGovernor","type":"address"}],"name":"proposeGovernor","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50600180546001600160a01b031916331790556101f7806100326000396000f3fe60806040526004361061003f5760003560e01c8063952608431461004457806395c48bd514610080578063a13594bf14610095578063bfc539d7146100b5575b600080fd5b34801561005057600080fd5b50600154610064906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61009361008e366004610191565b6100bd565b005b3480156100a157600080fd5b50600054610064906001600160a01b031681565b6100936100fc565b6100c5610178565b6001600160a01b03811633036100da57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011357600080fd5b600080546001546040516001600160a01b039283169392909116917f6fadb1c244276388aee22be93b919985a18748c021e5d48553957a48101a256091a360008054600180546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b0316331461018f57600080fd5b565b6000602082840312156101a357600080fd5b81356001600160a01b03811681146101ba57600080fd5b939250505056fea2646970667358221220f2c6cd6f14306c6e3856c72ae505b17a921f895357f5160b651d2148b50ec17764736f6c63430008140033","contractName":"Governed"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/NetworkRegistry.ts b/src/interfaces/generated/abi/NetworkRegistry.ts new file mode 100644 index 00000000..a05cb579 --- /dev/null +++ b/src/interfaces/generated/abi/NetworkRegistry.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"contract IERC20","name":"_erc20","type":"address"},{"internalType":"uint256","name":"_lockAmountForNetworkCreation","type":"uint256"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_networkCreationFeePercentage","type":"uint256"},{"internalType":"uint256","name":"_closeFeePercentage","type":"uint256"},{"internalType":"uint256","name":"_cancelFeePercentage","type":"uint256"},{"internalType":"address","name":"_bountyToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"string","name":"operation","type":"string"},{"indexed":false,"internalType":"string","name":"kind","type":"string"}],"name":"ChangeAllowedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"closeFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"cancelFee","type":"uint256"}],"name":"ChangedFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"lockFee","type":"uint256"}],"name":"LockFeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"network","type":"address"}],"name":"NetworkClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"network","type":"address"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"NetworkRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UserLockedAmountChanged","type":"event"},{"inputs":[],"name":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_LOCK_PERCENTAGE_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_proposedGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_erc20Addresses","type":"address[]"},{"internalType":"bool","name":"transactional","type":"bool"}],"name":"addAllowedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"amountOfNetworks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"uri","type":"string"},{"components":[{"internalType":"address","name":"originNetwork","type":"address"},{"internalType":"uint256","name":"bountyId","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"string","name":"kind","type":"string"}],"internalType":"struct INetworkV2.BountyConnector","name":"award","type":"tuple"}],"name":"awardBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bountyToken","outputs":[{"internalType":"contract BountyToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"changeAmountForNetworkCreation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_closeFee","type":"uint256"},{"internalType":"uint256","name":"_cancelFee","type":"uint256"}],"name":"changeGlobalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"changeNetworkCreationFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimGovernor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"closeFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc20","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"bool","name":"transactional","type":"bool"}],"name":"getAllowedToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"transactional","type":"bool"}],"name":"getAllowedTokenLen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"bool","name":"transactional","type":"bool"}],"name":"isAllowedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockAmountForNetworkCreation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedTokensOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"networkCreationFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"networkOfAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"networksArray","outputs":[{"internalType":"contract INetworkV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"openNetworks","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proposedGovernor","type":"address"}],"name":"proposeGovernor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"networkAddress","type":"address"}],"name":"registerNetwork","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_erc20Addresses","type":"address[]"},{"internalType":"bool","name":"transactional","type":"bool"}],"name":"removeAllowedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalLockedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x6080604052620f424060038190556305e69ec0600455600c80546001600160a01b031916905569d3c21bcecceda1000000600d556000600e55600f55624c4b4060108190556011553480156200005457600080fd5b5060405162001f6638038062001f668339810160408190526200007791620001db565b6001600055600280546001600160a01b031916331790556200009a8284620000fa565b620000a58462000185565b600680546001600160a01b039889166001600160a01b031991821617909155600d96909655600c805495881695871695909517909455600f929092556010556011556007805491909316911617905562000257565b6305f5e100821115620001425760405162461bcd60e51b815260040162000139906020808252600490820152634347463160e01b604082015260600190565b60405180910390fd5b6305f5e100811115620001815760405162461bcd60e51b815260040162000139906020808252600490820152634347463160e01b604082015260600190565b5050565b600454811115620001c25760405162461bcd60e51b81526004016200013990602080825260049082015263434c463160e01b604082015260600190565b50565b6001600160a01b0381168114620001c257600080fd5b600080600080600080600060e0888a031215620001f757600080fd5b87516200020481620001c5565b602089015160408a015191985096506200021e81620001c5565b80955050606088015193506080880151925060a0880151915060c08801516200024781620001c5565b8091505092959891949750929550565b611cff80620002676000396000f3fe6080604052600436106101d85760003560e01c8063724c5fd111610102578063bfc539d711610095578063dcc6c5a211610064578063dcc6c5a214610540578063dccc065e14610560578063dd46706414610576578063fcc198f41461059657600080fd5b8063bfc539d7146104d8578063c56d1fbc146104e0578063d4a873c114610500578063d8c00be51461052057600080fd5b8063a13594bf116100d1578063a13594bf1461046d578063a5d22f431461048d578063a69df4b5146104a3578063bfba4ca8146104b857600080fd5b8063724c5fd1146103fa578063785e9e861461041a578063952608431461043a57806395c48bd51461045a57600080fd5b80632d4147e31161017a57806368ffe5681161014957806368ffe568146103825780636c4f9b99146103a25780636d28333a146103b85780636ec24293146103cd57600080fd5b80632d4147e31461030c5780633410fe6e1461032c57806361d027b314610342578063679d23701461036257600080fd5b8063184aa723116101b6578063184aa7231461026a57806326fc16c11461028c57806328dcf94c146102cc5780632d3833cb146102ec57600080fd5b806303132059146101dd57806305a9f2741461020657806305e9c1c11461021c575b600080fd5b3480156101e957600080fd5b506101f360045481565b6040519081526020015b60405180910390f35b34801561021257600080fd5b506101f3600e5481565b34801561022857600080fd5b5061025261023736600461175e565b6013602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b34801561027657600080fd5b5061028a61028536600461175e565b6105ac565b005b34801561029857600080fd5b506102bc6102a736600461175e565b60146020526000908152604090205460ff1681565b60405190151581526020016101fd565b3480156102d857600080fd5b5061028a6102e736600461177b565b610997565b3480156102f857600080fd5b5061028a6103073660046117a2565b6109db565b34801561031857600080fd5b50600754610252906001600160a01b031681565b34801561033857600080fd5b506101f360035481565b34801561034e57600080fd5b50600c54610252906001600160a01b031681565b34801561036e57600080fd5b5061028a61037d366004611828565b610b0e565b34801561038e57600080fd5b506102bc61039d36600461184a565b610b5b565b3480156103ae57600080fd5b506101f3600d5481565b3480156103c457600080fd5b506005546101f3565b3480156103d957600080fd5b506101f36103e836600461175e565b60126020526000908152604090205481565b34801561040657600080fd5b506101f3610415366004611883565b610b7f565b34801561042657600080fd5b50600654610252906001600160a01b031681565b34801561044657600080fd5b50600254610252906001600160a01b031681565b61028a61046836600461175e565b610b97565b34801561047957600080fd5b50600154610252906001600160a01b031681565b34801561049957600080fd5b506101f3600f5481565b3480156104af57600080fd5b5061028a610bd6565b3480156104c457600080fd5b506102526104d33660046118a0565b610e7d565b61028a610e98565b3480156104ec57600080fd5b5061028a6104fb36600461177b565b610f15565b34801561050c57600080fd5b5061025261051b36600461177b565b610f57565b34801561052c57600080fd5b5061028a61053b3660046117a2565b610f81565b34801561054c57600080fd5b5061028a61055b3660046118f3565b611104565b34801561056c57600080fd5b506101f360105481565b34801561058257600080fd5b5061028a61059136600461177b565b611207565b3480156105a257600080fd5b506101f360115481565b6105b461136f565b600f54600d5482916000916105cd916305f5e100611399565b336000908152601360205260409020549091506001600160a01b0316156106205760405162461bcd60e51b8152602060048201526002602482015261052360f41b60448201526064015b60405180910390fd5b600d543360009081526012602052604090205410156106665760405162461bcd60e51b8152602060048201526002602482015261523160f01b6044820152606401610617565b336001600160a01b0316826001600160a01b031663952608436040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d291906119db565b6001600160a01b03161461070d5760405162461bcd60e51b8152602060048201526002602482015261291960f11b6044820152606401610617565b306001600160a01b0316826001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077991906119db565b6001600160a01b0316146107b45760405162461bcd60e51b8152602060048201526002602482015261148d60f21b6044820152606401610617565b600c546001600160a01b03161561088957600e546000906107d5908361145e565b600e819055600654600c5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810187905292945016915063a9059cbb906044016020604051808303816000875af1158015610832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085691906119f8565b6108875760405162461bcd60e51b8152602060048201526002602482015261523360f01b6044820152606401610617565b505b6005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b038086166001600160a01b0319928316179092559085166000818152601460209081526040808320805460ff1916909617909555338252601381528482208054909416909217909255601290529081205461091b908361145e565b33600081815260126020526040902082905560055491935091507fea552bf0d586e05f58ebf1fba52fdfffcf41b2d3845d7fa01353053559cff07390869061096590600190611a2b565b604080516001600160a01b03909316835260208301919091520160405180910390a25050506109946001600055565b50565b61099f611484565b6109a88161149b565b600f81905560405181907fdd074b04d622cae57530058783e5c5384bbaa81d96df88152b12cb59979b1e7190600090a250565b6109e3611484565b6000816109f157600a6109f4565b60085b90508260005b81811015610a7c57610a33868683818110610a1757610a17611a3e565b9050602002016020810190610a2c919061175e565b84906114d6565b1515600114610a6a5760405162461bcd60e51b815260206004820152600360248201526252543160e81b6044820152606401610617565b80610a7481611a54565b9150506109fa565b507f08e196748d0ef528ce4b5540c886c17f07cbf59e4c07eef61424cba0cde9619e858585610ac957604051806040016040528060068152602001651c995dd85c9960d21b815250610af0565b6040518060400160405280600d81526020016c1d1c985b9cd858dd1a5bdb985b609a1b8152505b604051610aff93929190611afc565b60405180910390a15050505050565b610b16611484565b610b2081836114eb565b60108290556011819055604051819083907fce8c8159f011d886721740f77c2d26c91b08ac01bd1d03bd132a9942661cb14990600090a35050565b6000610b768383610b6d57600a610b70565b60085b90611569565b90505b92915050565b6000610b7982610b9057600a61158b565b600861158b565b610b9f611484565b6001600160a01b0381163303610bb457600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610bde61136f565b33600090815260126020526040902054610c205760405162461bcd60e51b81526020600482015260036024820152620554c360ec1b6044820152606401610617565b336000908152601360205260409020546001600160a01b031615610d5857336000908152601360209081526040918290205482516321446c3b60e11b815292516001600160a01b03909116928392634288d876926004808401938290030181865afa158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190611b4d565b15610cea5760405162461bcd60e51b8152602060048201526003602482015262554c3160e81b6044820152606401610617565b33600081815260136020818152604080842080546001600160a01b031680865260148452828620805460ff191690559585529290915281546001600160a01b0319169091555182917fb620eabf23e616b2d87df954d580606b0248429fdf49956cabd970e561a7967d91a250505b600654336000818152601260205260409081902054905163a9059cbb60e01b8152600481019290925260248201526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde91906119f8565b610e105760405162461bcd60e51b8152602060048201526003602482015262554c3360e81b6044820152606401610617565b33600090815260126020526040812054600e54610e2c9161145e565b600e81905533600081815260126020526040808220829055519294509250907fad8644157e908a28f9ddbead8c6d09bae1158f47255a73de78e4d3a4e4fca232908390a350610e7b6001600055565b565b6000610b768383610e8f57600a610e92565b60085b90611595565b6001546001600160a01b03163314610eaf57600080fd5b6001546002546040516001600160a01b0392831692909116907f6fadb1c244276388aee22be93b919985a18748c021e5d48553957a48101a256090600090a360018054600280546001600160a01b03199081166001600160a01b03841617909155169055565b610f1d611484565b60008111610f525760405162461bcd60e51b8152602060048201526002602482015261433160f01b6044820152606401610617565b600d55565b60058181548110610f6757600080fd5b6000918252602090912001546001600160a01b0316905081565b610f89611484565b600081610f9757600a610f9a565b60085b9050826000610fb2610fab8461158b565b83906115a1565b915050601e811115610fec5760405162461bcd60e51b815260206004820152600360248201526204154360ec1b6044820152606401610617565b60005b828110156110715761102887878381811061100c5761100c611a3e565b9050602002016020810190611021919061175e565b85906115c8565b151560011461105f5760405162461bcd60e51b815260206004820152600360248201526241543160e81b6044820152606401610617565b8061106981611a54565b915050610fef565b507f08e196748d0ef528ce4b5540c886c17f07cbf59e4c07eef61424cba0cde9619e8686866110be57604051806040016040528060068152602001651c995dd85c9960d21b8152506110e5565b6040518060400160405280600d81526020016c1d1c985b9cd858dd1a5bdb985b609a1b8152505b6040516110f493929190611b66565b60405180910390a1505050505050565b61110c61136f565b3360009081526014602052604090205460ff1615156001146111555760405162461bcd60e51b8152602060048201526002602482015261041360f41b6044820152606401610617565b6007546001600160a01b03166111925760405162461bcd60e51b8152602060048201526002602482015261413160f01b6044820152606401610617565b600754604051636e6362d160e11b81526001600160a01b039091169063dcc6c5a2906111c690869086908690600401611bd3565b600060405180830381600087803b1580156111e057600080fd5b505af11580156111f4573d6000803e3d6000fd5b505050506112026001600055565b505050565b61120f61136f565b600081116112445760405162461bcd60e51b815260206004820152600260248201526104c360f41b6044820152606401610617565b6006546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf91906119f8565b6112f05760405162461bcd60e51b81526020600482015260026024820152614c3160f01b6044820152606401610617565b3360009081526012602052604090205461130b908290611c8a565b33600090815260126020526040902055600e54611329908290611c8a565b600e55336000818152601260205260408082205490519092917fad8644157e908a28f9ddbead8c6d09bae1158f47255a73de78e4d3a4e4fca23291a36109946001600055565b60026000540361139257604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60008383028160001985870982811083820303915050806000036113d0578382816113c6576113c6611c9d565b0492505050611457565b8084116113f05760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b600080838311156114745750600090508061147d565b50600190508183035b9250929050565b6002546001600160a01b03163314610e7b57600080fd5b6004548111156109945760405162461bcd60e51b815260040161061790602080825260049082015263434c463160e01b604082015260600190565b6000610b76836001600160a01b0384166115dd565b6305f5e1008211156115285760405162461bcd60e51b8152600401610617906020808252600490820152634347463160e01b604082015260600190565b6305f5e1008111156115655760405162461bcd60e51b8152600401610617906020808252600490820152634347463160e01b604082015260600190565b5050565b6001600160a01b03811660009081526001830160205260408120541515610b76565b6000610b79825490565b6000610b7683836116d0565b600080838301848110156115bc57600080925092505061147d565b60019590945092505050565b6000610b76836001600160a01b0384166116fa565b600081815260018301602052604081205480156116c6576000611601600183611a2b565b855490915060009061161590600190611a2b565b905080821461167a57600086600001828154811061163557611635611a3e565b906000526020600020015490508087600001848154811061165857611658611a3e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061168b5761168b611cb3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b79565b6000915050610b79565b60008260000182815481106116e7576116e7611a3e565b9060005260206000200154905092915050565b600081815260018301602052604081205461174157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b79565b506000610b79565b6001600160a01b038116811461099457600080fd5b60006020828403121561177057600080fd5b813561145781611749565b60006020828403121561178d57600080fd5b5035919050565b801515811461099457600080fd5b6000806000604084860312156117b757600080fd5b833567ffffffffffffffff808211156117cf57600080fd5b818601915086601f8301126117e357600080fd5b8135818111156117f257600080fd5b8760208260051b850101111561180757600080fd5b6020928301955093505084013561181d81611794565b809150509250925092565b6000806040838503121561183b57600080fd5b50508035926020909101359150565b6000806040838503121561185d57600080fd5b823561186881611749565b9150602083013561187881611794565b809150509250929050565b60006020828403121561189557600080fd5b813561145781611794565b600080604083850312156118b357600080fd5b82359150602083013561187881611794565b634e487b7160e01b600052604160045260246000fd5b6000608082840312156118ed57600080fd5b50919050565b60008060006060848603121561190857600080fd5b833561191381611749565b9250602084013567ffffffffffffffff8082111561193057600080fd5b818601915086601f83011261194457600080fd5b813581811115611956576119566118c5565b604051601f8201601f19908116603f0116810190838211818310171561197e5761197e6118c5565b8160405282815289602084870101111561199757600080fd5b8260208601602083013760006020848301015280965050505060408601359150808211156119c457600080fd5b506119d1868287016118db565b9150509250925092565b6000602082840312156119ed57600080fd5b815161145781611749565b600060208284031215611a0a57600080fd5b815161145781611794565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b7957610b79611a15565b634e487b7160e01b600052603260045260246000fd5b600060018201611a6657611a66611a15565b5060010190565b8183526000602080850194508260005b85811015611aab578135611a9081611749565b6001600160a01b031687529582019590820190600101611a7d565b509495945050505050565b6000815180845260005b81811015611adc57602081850181015186830182015201611ac0565b506000602082860101526020601f19601f83011685010191505092915050565b606081526000611b10606083018587611a6d565b828103806020850152600682526572656d6f766560d01b602083015260408101604085015250611b436040820185611ab6565b9695505050505050565b600060208284031215611b5f57600080fd5b5051919050565b606081526000611b7a606083018587611a6d565b828103806020850152600382526218591960ea1b602083015260408101604085015250611b436040820185611ab6565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808616835260606020840152611bf56060840186611ab6565b83810360408501528435611c0881611749565b828116825250602085013560208201526040850135604082015260608501359150601e19853603018212611c3b57600080fd5b6020918501918201913567ffffffffffffffff811115611c5a57600080fd5b803603831315611c6957600080fd5b60806060830152611c7e608083018285611baa565b98975050505050505050565b80820180821115610b7957610b79611a15565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f8a59baee202b898592a4361b119e78992ef2a293939018e5f4aa766fbe8952864736f6c63430008140033","contractName":"NetworkRegistry"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/NetworkV2.ts b/src/interfaces/generated/abi/NetworkV2.ts new file mode 100644 index 00000000..e1e220dd --- /dev/null +++ b/src/interfaces/generated/abi/NetworkV2.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"address","name":"_networkToken","type":"address"},{"internalType":"address","name":"_registry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BountyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"BountyCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"BountyClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"string","name":"cid","type":"string"},{"indexed":true,"internalType":"address","name":"creator","type":"address"}],"name":"BountyCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"bool","name":"funded","type":"bool"},{"indexed":false,"internalType":"address","name":"benefactor","type":"address"},{"indexed":false,"internalType":"int256","name":"amount","type":"int256"}],"name":"BountyFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"bountyId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"BountyProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"bountyId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"bool","name":"overflow","type":"bool"}],"name":"BountyProposalDisputed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"bountyId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"BountyProposalRefused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"bountyId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pullRequestId","type":"uint256"}],"name":"BountyPullRequestCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"bountyId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pullRequestId","type":"uint256"}],"name":"BountyPullRequestCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"bountyId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pullRequestId","type":"uint256"}],"name":"BountyPullRequestReadyForReview","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"param","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newvalue","type":"uint256"}],"name":"NetworkParamChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"actor","type":"address"},{"indexed":true,"internalType":"int256","name":"actionAmount","type":"int256"},{"indexed":true,"internalType":"uint256","name":"newLockedTotal","type":"uint256"}],"name":"OraclesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OraclesTransfer","type":"event"},{"inputs":[],"name":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_proposedGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bountiesIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"cancelBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"cancelFundRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ofBounty","type":"uint256"},{"internalType":"uint256","name":"prId","type":"uint256"}],"name":"cancelPullRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelableTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_parameter","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"changeNetworkParameter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"cidBountyId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"string","name":"ipfsUri","type":"string"}],"name":"closeBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"councilAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"prId","type":"uint256"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"percentages","type":"uint256[]"}],"name":"createBountyProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"forBountyId","type":"uint256"},{"internalType":"string","name":"originRepo","type":"string"},{"internalType":"string","name":"originBranch","type":"string"},{"internalType":"string","name":"originCID","type":"string"},{"internalType":"string","name":"userRepo","type":"string"},{"internalType":"string","name":"userBranch","type":"string"},{"internalType":"uint256","name":"cid","type":"uint256"}],"name":"createPullRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"delegateOracles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disputableTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bountyId","type":"uint256"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"disputeBountyProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"disputes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"draftTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"fundingAmount","type":"uint256"}],"name":"fundBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getBounty","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"creationDate","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"transactional","type":"address"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"uint256","name":"fundingAmount","type":"uint256"},{"internalType":"bool","name":"closed","type":"bool"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"funded","type":"bool"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"repoPath","type":"string"},{"internalType":"string","name":"branch","type":"string"},{"internalType":"string","name":"cid","type":"string"},{"internalType":"string","name":"githubUser","type":"string"},{"internalType":"uint256","name":"closedDate","type":"uint256"},{"components":[{"internalType":"string","name":"originRepo","type":"string"},{"internalType":"string","name":"originCID","type":"string"},{"internalType":"string","name":"originBranch","type":"string"},{"internalType":"string","name":"userRepo","type":"string"},{"internalType":"string","name":"userBranch","type":"string"},{"internalType":"bool","name":"ready","type":"bool"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"cid","type":"uint256"},{"internalType":"uint256","name":"id","type":"uint256"}],"internalType":"struct INetworkV2.PullRequest[]","name":"pullRequests","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"creationDate","type":"uint256"},{"internalType":"uint256","name":"oracles","type":"uint256"},{"internalType":"uint256","name":"disputeWeight","type":"uint256"},{"internalType":"uint256","name":"prId","type":"uint256"},{"internalType":"bool","name":"refusedByBountyOwner","type":"bool"},{"internalType":"address","name":"creator","type":"address"},{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"internalType":"struct INetworkV2.ProposalDetail[]","name":"details","type":"tuple[]"}],"internalType":"struct INetworkV2.Proposal[]","name":"proposals","type":"tuple[]"},{"components":[{"internalType":"address","name":"benefactor","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"creationDate","type":"uint256"}],"internalType":"struct INetworkV2.Benefactor[]","name":"funding","type":"tuple[]"}],"internalType":"struct INetworkV2.Bounty","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getDelegationsFor","outputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct INetworkV2.Delegation[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"hardCancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"lock","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manageOracles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mergeCreatorFeeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"networkToken","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftToken","outputs":[{"internalType":"contract BountyToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"transactional","type":"address"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"uint256","name":"fundingAmount","type":"uint256"},{"internalType":"string","name":"cid","type":"string"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"repoPath","type":"string"},{"internalType":"string","name":"branch","type":"string"},{"internalType":"string","name":"githubUser","type":"string"}],"name":"openBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oracleExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oracles","outputs":[{"internalType":"uint256","name":"locked","type":"uint256"},{"internalType":"uint256","name":"toOthers","type":"uint256"},{"internalType":"uint256","name":"byOthers","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oraclesDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentageNeededForDispute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proposedGovernor","type":"address"}],"name":"proposeGovernor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"proposerFeeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bountyId","type":"uint256"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"refuseBountyProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract NetworkRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"fundingId","type":"uint256"}],"name":"retractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"entryId","type":"uint256"}],"name":"takeBackOracles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalNetworkToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"newTokenAmount","type":"uint256"}],"name":"updateBountyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"fundingId","type":"uint256"}],"name":"withdrawFundingReward","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x6080604052620f42406003556000600755620f4240600855600060095561c350600a55621e8480600b55622dc6c0600c556203f480600d5562015180600e5562f14280600f556a14adf4b7320334b900000060105560006011553480156200006657600080fd5b5060405162005c6638038062005c668339810160408190526200008991620000e8565b600180546001600160a01b031990811633178255600291909155600480546001600160a01b039485169083161790556006805492909316911617905562000120565b80516001600160a01b0381168114620000e357600080fd5b919050565b60008060408385031215620000fc57600080fd5b6200010783620000cb565b91506200011760208401620000cb565b90509250929050565b615b3680620001306000396000f3fe6080604052600436106102515760003560e01c80639526084311610139578063cca1624c116100b6578063e80dc3ea1161007a578063e80dc3ea146106cc578063ee8c4bbf146106ec578063f784804914610719578063f7ca40291461072f578063f91325881461074f578063ff293d3b1461078757600080fd5b8063cca1624c14610636578063d06fcba81461064c578063d455f5551461066c578063d63b48a01461068c578063e5e5dff1146106ac57600080fd5b8063a3e8bebf116100fd578063a3e8bebf14610574578063addd509914610594578063bfc539d7146105eb578063c1d4b50e146105f3578063c881bbe81461062057600080fd5b806395260843146104e157806395c48bd5146105015780639da9f94d14610514578063a13594bf14610534578063a1949c9a1461055457600080fd5b80635c20be88116101d25780637b103999116101965780637b1039991461042b578063822d8d2b1461044b5780638c46794a1461046b5780638da7e9e1146104815780638fc802d9146104a1578063933d9476146104c157600080fd5b80635c20be88146103875780636a05ba96146103a75780636b10641f146103c75780636ca95a4e146103dd57806379f7bdbb1461041557600080fd5b806337a838df1161021957806337a838df146103055780633fbd8e2b1461031b5780634288d8761461033b578063455b7eb014610351578063506d83fe1461036757600080fd5b80630f5b8ae514610256578063157c619a146102785780631bf67c13146102a157806320a6d29e146102d95780633410fe6e146102ef575b600080fd5b34801561026257600080fd5b50610276610271366004614bc4565b6107a7565b005b34801561028457600080fd5b5061028e60095481565b6040519081526020015b60405180910390f35b3480156102ad57600080fd5b5061028e6102bc366004614c0b565b601660209081526000928352604080842090915290825290205481565b3480156102e557600080fd5b5061028e600d5481565b3480156102fb57600080fd5b5061028e60035481565b34801561031157600080fd5b5061028e60105481565b34801561032757600080fd5b50610276610336366004614bc4565b610abc565b34801561034757600080fd5b5061028e60075481565b34801561035d57600080fd5b5061028e60115481565b34801561037357600080fd5b50610276610382366004614bc4565b610ce5565b34801561039357600080fd5b506102766103a2366004614bc4565b610f92565b3480156103b357600080fd5b506102766103c2366004614bc4565b6111c3565b3480156103d357600080fd5b5061028e600b5481565b3480156103e957600080fd5b506004546103fd906001600160a01b031681565b6040516001600160a01b039091168152602001610298565b34801561042157600080fd5b5061028e600f5481565b34801561043757600080fd5b506006546103fd906001600160a01b031681565b34801561045757600080fd5b50610276610466366004614c45565b6112c1565b34801561047757600080fd5b5061028e600e5481565b34801561048d57600080fd5b5061027661049c366004614d06565b6115a3565b3480156104ad57600080fd5b506102766104bc366004614deb565b6117a3565b3480156104cd57600080fd5b506102766104dc366004614e3b565b61209c565b3480156104ed57600080fd5b506001546103fd906001600160a01b031681565b61027661050f366004614e54565b6120e2565b34801561052057600080fd5b5061027661052f366004614e3b565b612121565b34801561054057600080fd5b506000546103fd906001600160a01b031681565b34801561056057600080fd5b5061027661056f366004614eb6565b61234d565b34801561058057600080fd5b5061027661058f366004614bc4565b612711565b3480156105a057600080fd5b506105d06105af366004614e54565b60146020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610298565b61027661294d565b3480156105ff57600080fd5b5061061361060e366004614e54565b6129c9565b6040516102989190614f39565b34801561062c57600080fd5b5061028e600a5481565b34801561064257600080fd5b5061028e60085481565b34801561065857600080fd5b506005546103fd906001600160a01b031681565b34801561067857600080fd5b50610276610687366004614e3b565b612a66565b34801561069857600080fd5b506102766106a7366004614bc4565b612cc1565b3480156106b857600080fd5b506102766106c7366004614e3b565b612ec7565b3480156106d857600080fd5b506102766106e7366004614bc4565b612f00565b3480156106f857600080fd5b5061070c610707366004614e3b565b61309d565b604051610298919061523a565b34801561072557600080fd5b5061028e600c5481565b34801561073b57600080fd5b5061027661074a366004615409565b613a23565b34801561075b57600080fd5b5061028e61076a366004615439565b805160208183018101805160138252928201919093012091525481565b34801561079357600080fd5b506102766107a2366004615476565b613ca9565b6107af614280565b8161090b57600480546040805163313ce56760e01b815290516001600160a01b039092169263313ce5679282820192602092908290030181865afa1580156107fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081f9190615588565b61082a90600a6156a5565b6108359060016156b4565b81101561085d5760405162461bcd60e51b8152600401610854906156cb565b60405180910390fd5b600480546040805163313ce56760e01b815290516001600160a01b039092169263313ce5679282820192602092908290030181865afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c89190615588565b6108d390600a6156a5565b6108e29064174876e8006156b4565b8111156109015760405162461bcd60e51b8152600401610854906156e6565b6010819055610a7f565b6002820361094d57603c81101580156109275750621a5e008111155b6109435760405162461bcd60e51b815260040161085490615701565b600e819055610a7f565b6001820361098f57603c81101580156109695750621a5e008111155b6109855760405162461bcd60e51b81526004016108549061571c565b600d819055610a7f565b600582036109c55763030a32c08111156109bb5760405162461bcd60e51b815260040161085490615737565b600c819055610a7f565b600482036109fa57629896808111156109f05760405162461bcd60e51b815260040161085490615752565b600a819055610a7f565b60088203610a1c5762989680811115610a1257600080fd5b600b819055610a7f565b60038203610a4e5760075415610a445760405162461bcd60e51b8152600401610854906156cb565b6008819055610a7f565b60078203610a7f5762ed4e00811015610a795760405162461bcd60e51b815260040161085490615701565b600f8190555b60408051838152602081018390527f7bc285bf3c87b72a601fb5580ac66e887ad560926548252e8ba8fe491c3ba4de910160405180910390a15050565b610ac4614299565b610acd826142c1565b610ad88260016142fa565b610ae3826000614344565b600082815260126020526040902060048101546001600160a01b03168215801590610b12575082826002015414155b610b2e5760405162461bcd60e51b8152600401610854906156cb565b8160020154831115610bec576000610b5383600201548561437890919063ffffffff16565b6040516323b872dd60e01b81529092506001600160a01b03841691506323b872dd90610b879033903090869060040161576d565b6020604051808303816000875af1158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190615791565b610be65760405162461bcd60e51b8152600401610854906156e6565b50610c99565b6002820154600090610bfe9085614378565b600385015460405163a9059cbb60e01b81529193506001600160a01b03808616935063a9059cbb92610c38929091169085906004016157ae565b6020604051808303816000875af1158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7b9190615791565b610c975760405162461bcd60e51b815260040161085490615701565b505b6002820183905560405183815284907ff9781175e8e841f5744b395541f1b57f30f080bf0fc9ff13be9a1738ff3c18fd9060200160405180910390a25050610ce16001600255565b5050565b610cee8261439e565b6000828152601260205260409020600501546001600160a01b0316610d3a5760405162461bcd60e51b8152602060048201526002602482015261057360f41b6044820152606401610854565b60008281526012602052604090206008015460ff161515600114610d855760405162461bcd60e51b8152602060048201526002602482015261573160f01b6044820152606401610854565b6000828152601260205260409020601101548110610dca5760405162461bcd60e51b81526020600482015260026024820152612b9960f11b6044820152606401610854565b60008281526012602052604090206011018054610e09919083908110610df257610df26157c7565b9060005260206000209060030201600101546143e9565b60008281526012602052604081206006810154600782015460119092018054610e5f93919086908110610e3e57610e3e6157c7565b9060005260206000209060030201600101546144099092919063ffffffff16565b60008481526012602052604081206011018054929350909184908110610e8757610e876157c7565b60009182526020808320600160039093020191909101929092558481526012909152604090206005810154601190910180546001600160a01b039092169163a9059cbb919085908110610edc57610edc6157c7565b60009182526020909120600390910201546040516001600160e01b031960e084901b168152610f19916001600160a01b03169085906004016157ae565b6020604051808303816000875af1158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c9190615791565b610f8d5760405162461bcd60e51b8152602060048201526002602482015261573560f01b6044820152606401610854565b505050565b610f9a614299565b610fa5826001614344565b610fb08260006144ce565b610fb982614520565b6000828152601260205260409020600881015462010000900460ff1615610ff25760405162461bcd60e51b8152600401610854906156cb565b80600701548160020154106110195760405162461bcd60e51b8152600401610854906156e6565b600281015460009061102b9084614557565b91505081600701548111156110525760405162461bcd60e51b815260040161085490615701565b6040805160608101825233808252602080830187815242848601908152601188018054600180820183556000928352949091209551600390910290950180546001600160a01b0319166001600160a01b0396871617815591519282019290925590516002918201558501849055600785015460088601805462ff00001916918614620100000291909117905560048086015493516323b872dd60e01b815293909216926323b872dd9261110a9291309189910161576d565b6020604051808303816000875af1158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d9190615791565b6111695760405162461bcd60e51b815260040161085490615701565b8160080160029054906101000a900460ff161515847f01a720f6fd101ffacb51416b6e89b18b3367c4bed6ad0fd926db49f430dec4b233866040516111af9291906157ae565b60405180910390a35050610ce16001600255565b6111ce8260006142fa565b6111d782614520565b6111e08261457e565b6111e9826142c1565b6111f382826145b0565b60008281526012602052604090206010018054600191908390811061121a5761121a6157c7565b906000526020600020906007020160050160006101000a81548160ff021916908315150217905550817fa90e0545ec8c09ee1abc127fbad8fe41e0377393ec4e42e1a3c5d1a0861514e860126000858152602001908152602001600020601001838154811061128b5761128b6157c7565b906000526020600020906007020160040154836040516112b5929190918252602082015260400190565b60405180910390a25050565b6112c9614299565b6112d2816143e9565b81156113f65760006112f3600854600354846144099092919063ffffffff16565b33600090815260146020526040812054919250906113119083614557565b33600081815260146020526040908190208390556004805491516323b872dd60e01b81529395506001600160a01b0390911693506323b872dd9261135a9291309189910161576d565b6020604051808303816000875af1158015611379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139d9190615791565b6113b95760405162461bcd60e51b8152600401610854906157dd565b6007546000906113c99085614557565b91505060006113e38460095461455790919063ffffffff16565b60079390935550506009555061154f9050565b600061140f6003546008546145ed90919063ffffffff16565b91506000905061141f83836145ed565b3360009081526014602052604090205490925084111590506114535760405162461bcd60e51b8152600401610854906156cb565b6004805460405163a9059cbb60e01b81526001600160a01b039091169163a9059cbb916114849133918691016157ae565b6020604051808303816000875af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190615791565b6114e35760405162461bcd60e51b8152600401610854906156e6565b336000908152601460205260408120546114fd9085614378565b91505060006115178360075461437890919063ffffffff16565b91505060006115318660095461437890919063ffffffff16565b33600090815260146020526040902094909455505060075560095550505b80611558614620565b8361156b57611566826157f8565b61156d565b815b60405133907fca19f48b5787bc1e9cc87d51f801d4a3055cd8d2669423f952371c03e819c7d490600090a450610ce16001600255565b6115ac8761457e565b6115b587614520565b6115c08760006142fa565b600060126000898152602001908152602001600020905061163a604051806101400160405280606081526020016060815260200160608152602001606081526020016060815260200160001515815260200160001515815260200160006001600160a01b0316815260200160008152602001600081525090565b6101008101839052600f82018054610120830181905260808301869052606083018790526040830189905289835260208084018990523360e0850152600160a08501819052820183556000928352909120825183926008029091019081906116a2908261589c565b50602082015160018201906116b7908261589c565b50604082015160028201906116cc908261589c565b50606082015160038201906116e1908261589c565b50608082015160048201906116f6908261589c565b5060a082015160058201805460c085015160e086015161ffff1990921693151561ff0019169390931761010093151584021762010000600160b01b031916620100006001600160a01b039092169190910217905582015160068201556101209182015160079091015581015160405190815289907f1a7ff0b0be2259088d2d7849b63b09ff6a99c8767889c4cefc1c305f3fe7aec2906020015b60405180910390a2505050505050505050565b6117ab614299565b6117b48361457e565b6117bd83614520565b6117c88360006142fa565b6117d283836145b0565b6000838152601260205260408120600481015460108201805492936001600160a01b039092169286908110611809576118096157c7565b906000526020600020906007020190506000611856600d54856010018881548110611836576118366157c7565b90600052602060002090600702016001015461455790919063ffffffff16565b915050804210156118795760405162461bcd60e51b8152600401610854906156e6565b611887600954600c54614645565b8260030154106118a95760405162461bcd60e51b815260040161085490615701565b600582015460ff16156118e25760405162461bcd60e51b81526020600482015260016024820152603760f81b6044820152606401610854565b60126000888152602001908152602001600020600f0182600401548154811061190d5761190d6157c7565b6000918252602090912060089091020160050154610100900460ff161561195a5760405162461bcd60e51b81526020600482015260016024820152600760fb1b6044820152606401610854565b60028401546006546001600160a01b031615611b8c57600654604080516361d027b360e01b815290516000926001600160a01b0316916361d027b39160048083019260209291908290030181865afa1580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119de919061595c565b6001600160a01b031614611b8c576000611a728660020154600660009054906101000a90046001600160a01b03166001600160a01b031663dccc065e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d9190615979565b614645565b90506000611a808383614378565b915050809250856001600160a01b031663a9059cbb600660009054906101000a90046001600160a01b03166001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c919061595c565b846040518363ffffffff1660e01b8152600401611b2a9291906157ae565b6020604051808303816000875af1158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d9190615791565b611b895760405162461bcd60e51b815260040161085490615752565b50505b6000611b9a82600a54614645565b90506000611ba88383614378565b9150506000611bb982600b54614645565b90506000611bc78383614378565b60405163a9059cbb60e01b81529092506001600160a01b038a16915063a9059cbb90611bf990339088906004016157ae565b6020604051808303816000875af1158015611c18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3c9190615791565b611c585760405162461bcd60e51b81526004016108549061571c565b600587015460405163a9059cbb60e01b81526001600160a01b03808b169263a9059cbb92611c94926101009092049091169086906004016157ae565b6020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd79190615791565b611d075760405162461bcd60e51b81526020600482015260016024820152603960f81b6044820152606401610854565b60005b6006880154611d1b90600190615992565b8111612037576000886006018281548110611d3857611d386157c7565b90600052602060002090600202016040518060400160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015481525050905060006040518060800160405280306001600160a01b031681526020018d60000154815260200183602001518152602001604051806040016040528060038152602001623232bb60e91b81525081525090508a6001600160a01b031663a9059cbb8360000151611e0b85602001516064896144099092919063ffffffff16565b6040518363ffffffff1660e01b8152600401611e289291906157ae565b6020604051808303816000875af1158015611e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6b9190615791565b611e875760405162461bcd60e51b815260040161085490615737565b6006546001600160a01b031615611f955760065460408051632d4147e360e01b815290516000926001600160a01b031691632d4147e39160048083019260209291908290030181865afa158015611ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f06919061595c565b6001600160a01b031614611f9057600660009054906101000a90046001600160a01b03166001600160a01b031663dcc6c5a283600001518f846040518463ffffffff1660e01b8152600401611f5d939291906159a5565b600060405180830381600087803b158015611f7757600080fd5b505af1158015611f8b573d6000803e3d6000fd5b505050505b612022565b6005546001600160a01b03161561202257600560009054906101000a90046001600160a01b03166001600160a01b031663dcc6c5a283600001518f846040518463ffffffff1660e01b8152600401611fef939291906159a5565b600060405180830381600087803b15801561200957600080fd5b505af115801561201d573d6000803e3d6000fd5b505050505b5050808061202f90615a0f565b915050611d0a565b5060088901805460ff1916600117905542600e8a01556040518c907fe44903a04328507d74e4709cbebc6c819f9f1cd0b7cb171ba22814fcc18ecf3890612081908e815260200190565b60405180910390a2505050505050505050610f8d6001600255565b6120a4614299565b6120ad816142c1565b6120b8816001614344565b6120c38160006144ce565b6120cc81614520565b6120d58161465f565b6120df6001600255565b50565b6120ea614280565b6001600160a01b03811633036120ff57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152601560205260409020805461215e919083908110612147576121476157c7565b9060005260206000209060030201600201546143e9565b33600090815260156020526040812080548390811061217f5761217f6157c7565b9060005260206000209060030201600201549050600060156000336001600160a01b03166001600160a01b0316815260200190815260200160002083815481106121cb576121cb6157c7565b6000918252602080832060016003909302019190910154338352601490915260408220546001600160a01b03909116925081906122089085614557565b3360009081526014602052604081206001015492945090925090819061222e9087614378565b6001600160a01b03871660009081526014602052604081206002015492945090925090819061225d9089614378565b3360008181526014602090815260408083208b81556001018990556001600160a01b038d168352808320600201859055928252601590529081208054939550919350918b9081106122b0576122b06157c7565b9060005260206000209060030201600201819055508580156122cf5750835b80156122d85750815b61230a5760405162461bcd60e51b815260206004820152600360248201526254423160e81b6044820152606401610854565b604051889033906001600160a01b038a16907f5f4252e421e3044a5807ef34894e8c440691ce44e43d817a276586b7e2fe58f490600090a4505050505050505050565b6123588660006142fa565b6123618661457e565b61236a86614520565b601054612375614620565b10156123935760405162461bcd60e51b8152600401610854906157dd565b6000868152601260205260409020600f01546123b190600190615992565b8511156123d05760405162461bcd60e51b8152600401610854906157dd565b6000868152601260205260409020600f018054869081106123f3576123f36157c7565b600091825260209091206005600890920201015460ff16151560011461242b5760405162461bcd60e51b8152600401610854906156cb565b6000868152601260205260409020600f0180548690811061244e5761244e6157c7565b6000918252602090912060089091020160050154610100900460ff161561249c5760405162461bcd60e51b8152602060048201526002602482015261219960f11b6044820152606401610854565b60286124a88285615a28565b11156124db5760405162461bcd60e51b8152602060048201526002602482015261433360f01b6044820152606401610854565b82811461250f5760405162461bcd60e51b815260206004820152600260248201526110cd60f21b6044820152606401610854565b6000868152601260205260408120601081018054600190810180835582855292939261253b9190615992565b8154811061254b5761254b6157c7565b906000526020600020906007020190506001826010018054905061256f9190615992565b815560048101879055426001820155600581018054610100600160a81b03191633610100021790556000805b868110156126b2576000806125db6125d48989868181106125be576125be6157c7565b60028b0154926020909102013590506064614409565b8590614557565b600687018054600101815560005294509150839050898984818110612602576126026157c7565b90506020020160208101906126179190614e54565b85600601848154811061262c5761262c6157c7565b6000918252602090912060029091020180546001600160a01b0319166001600160a01b039290921691909117905587878481811061266c5761266c6157c7565b90506020020135856006018481548110612688576126886157c7565b906000526020600020906002020160010181905550505080806126aa90615a0f565b91505061259b565b50826002015481146126d65760405162461bcd60e51b8152600401610854906156cb565b81546040518a917f36654b68c78c49155c99925d0616da42e780dd8dded3bbfbe3bb3f7ba46edb8f91611790918c8252602082015260400190565b612719614299565b6127248260016142fa565b61272f826001614344565b61273882614520565b600082815260126020526040902060110154811061277d5760405162461bcd60e51b8152602060048201526002602482015261052360f41b6044820152606401610854565b6000828152601260205260408120601181018054919291849081106127a4576127a46157c7565b6000918252602090912060039091020180549091506001600160a01b031633146127f55760405162461bcd60e51b8152602060048201526002602482015261523160f01b6044820152606401610854565b61280281600101546143e9565b600480830154600183015460405163a9059cbb60e01b81526001600160a01b039092169263a9059cbb9261283a9233929091016157ae565b6020604051808303816000875af1158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d9190615791565b6128ae5760405162461bcd60e51b8152602060048201526002602482015261523360f01b6044820152606401610854565b806001015482600201546128c29190615992565b60028301908155600060018301556007830154905460088401805462010000838514810262ff0000199092169190911791829055604051939092039291900460ff1615159086907f01a720f6fd101ffacb51416b6e89b18b3367c4bed6ad0fd926db49f430dec4b29061293890339086906157ae565b60405180910390a3505050610ce16001600255565b6000546001600160a01b0316331461296457600080fd5b600080546001546040516001600160a01b039283169392909116917f6fadb1c244276388aee22be93b919985a18748c021e5d48553957a48101a256091a360008054600180546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b0381166000908152601560209081526040808320805482518185028101850190935280835260609492939192909184015b82821015612a5b576000848152602090819020604080516060810182526003860290920180546001600160a01b03908116845260018083015490911684860152600290910154918301919091529083529092019101612a01565b505050509050919050565b612a6e614299565b612a76614280565b6000818152601260205260409020600301546001600160a01b0316612aad5760405162461bcd60e51b8152600401610854906156cb565b600081815260126020526040812060010154612aca904290614378565b915050600f54811015612aef5760405162461bcd60e51b815260040161085490615701565b60008281526012602052604090206010015415612c875760005b600083815260126020526040902060100154612b2790600190615992565b8111612c85576000838152601260205260408120601001805483908110612b5057612b506157c7565b60009182526020808320604080516101008082018352600795909502909201805483526001810154838501526002810154838301526003810154606084015260048101546080840152600581015460ff8116151560a0850152949094046001600160a01b031660c0830152600684018054825181860281018601909352808352929560e08701949293919284015b82821015612c26576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101612bde565b50505050815250509050612c3e600954600c54614645565b8160600151101580612c56575060a081015115156001145b612c725760405162461bcd60e51b81526004016108549061571c565b5080612c7d81615a0f565b915050612b09565b505b6000828152601260205260408120600701549003612cad57612ca88261485b565b612cb6565b612cb68261465f565b506120df6001600255565b612ccc8260006142fa565b612cd58261457e565b612cde82614520565b612ce882826145b0565b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120336000908152601683528381208282529092529190205415612d475760405162461bcd60e51b8152600401610854906156cb565b6000838152601260205260409020601081018054600f9092019184908110612d7157612d716157c7565b90600052602060002090600702016004015481548110612d9357612d936157c7565b6000918252602090912060089091020160050154610100900460ff1615612dcc5760405162461bcd60e51b8152600401610854906156e6565b6000612dd6614620565b9050612de1816143e9565b6000848152601260205260408120601001805485908110612e0457612e046157c7565b906000526020600020906007020190506000612e2d83836003015461455790919063ffffffff16565b600384018181553360009081526016602090815260408083208a8452909152902086905560048501549054600954600c549395508a94507ffa6a93e874b688a99d68281b88fb951aafcb7193aa1c5d3ef18cedfa525bae8e938a9291612e9291614645565b6003880154604080519586526020860194909452928401919091521115606082015260800160405180910390a2505050505050565b612ecf614299565b612ed8816142c1565b612ee38160016142fa565b612eec81614520565b612ef7816000614344565b6120d58161485b565b612f098261457e565b612f148260006142fa565b612f1d82614520565b6000828152601260205260409020600f0154612f3b90600190615992565b811115612f5a5760405162461bcd60e51b8152600401610854906156cb565b6000828152601260205260409020600f01805482908110612f7d57612f7d6157c7565b6000918252602090912060089091020160050154610100900460ff1615612fb65760405162461bcd60e51b8152600401610854906156e6565b6000828152601260205260409020600f01805433919083908110612fdc57612fdc6157c7565b60009182526020909120600890910201600501546201000090046001600160a01b03161461301c5760405162461bcd60e51b815260040161085490615701565b6000828152601260205260409020600f0180546001919083908110613043576130436157c7565b906000526020600020906008020160050160016101000a81548160ff021916908315150217905550817fce999d6bc9cf12f12cc43ab6e9a344865d9914601b5e0d0e605e4e90047a9dda826040516112b591815260200190565b61315a60405180610280016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000151581526020016000151581526020016000151581526020016060815260200160608152602001606081526020016060815260200160608152602001600081526020016060815260200160608152602001606081525090565b6000828152601260209081526040918290208251610280810184528154815260018201549281019290925260028101549282019290925260038201546001600160a01b03908116606083015260048301548116608083015260058301541660a0820152600682015460c0820152600782015460e0820152600882015460ff808216151561010080850191909152820481161515610120840152620100009091041615156101408201526009820180549192916101608401919061321c90615814565b80601f016020809104026020016040519081016040528092919081815260200182805461324890615814565b80156132955780601f1061326a57610100808354040283529160200191613295565b820191906000526020600020905b81548152906001019060200180831161327857829003601f168201915b50505050508152602001600a820180546132ae90615814565b80601f01602080910402602001604051908101604052809291908181526020018280546132da90615814565b80156133275780601f106132fc57610100808354040283529160200191613327565b820191906000526020600020905b81548152906001019060200180831161330a57829003601f168201915b50505050508152602001600b8201805461334090615814565b80601f016020809104026020016040519081016040528092919081815260200182805461336c90615814565b80156133b95780601f1061338e576101008083540402835291602001916133b9565b820191906000526020600020905b81548152906001019060200180831161339c57829003601f168201915b50505050508152602001600c820180546133d290615814565b80601f01602080910402602001604051908101604052809291908181526020018280546133fe90615814565b801561344b5780601f106134205761010080835404028352916020019161344b565b820191906000526020600020905b81548152906001019060200180831161342e57829003601f168201915b50505050508152602001600d8201805461346490615814565b80601f016020809104026020016040519081016040528092919081815260200182805461349090615814565b80156134dd5780601f106134b2576101008083540402835291602001916134dd565b820191906000526020600020905b8154815290600101906020018083116134c057829003601f168201915b50505050508152602001600e8201548152602001600f8201805480602002602001604051908101604052809291908181526020016000905b8282101561387157838290600052602060002090600802016040518061014001604052908160008201805461354990615814565b80601f016020809104026020016040519081016040528092919081815260200182805461357590615814565b80156135c25780601f10613597576101008083540402835291602001916135c2565b820191906000526020600020905b8154815290600101906020018083116135a557829003601f168201915b505050505081526020016001820180546135db90615814565b80601f016020809104026020016040519081016040528092919081815260200182805461360790615814565b80156136545780601f1061362957610100808354040283529160200191613654565b820191906000526020600020905b81548152906001019060200180831161363757829003601f168201915b5050505050815260200160028201805461366d90615814565b80601f016020809104026020016040519081016040528092919081815260200182805461369990615814565b80156136e65780601f106136bb576101008083540402835291602001916136e6565b820191906000526020600020905b8154815290600101906020018083116136c957829003601f168201915b505050505081526020016003820180546136ff90615814565b80601f016020809104026020016040519081016040528092919081815260200182805461372b90615814565b80156137785780601f1061374d57610100808354040283529160200191613778565b820191906000526020600020905b81548152906001019060200180831161375b57829003601f168201915b5050505050815260200160048201805461379190615814565b80601f01602080910402602001604051908101604052809291908181526020018280546137bd90615814565b801561380a5780601f106137df5761010080835404028352916020019161380a565b820191906000526020600020905b8154815290600101906020018083116137ed57829003601f168201915b5050509183525050600582015460ff8082161515602080850191909152610100830490911615156040840152620100009091046001600160a01b031660608301526006830154608083015260079092015460a0909101529082526001929092019101613515565b50505050815260200160108201805480602002602001604051908101604052809291908181526020016000905b82821015613993576000848152602080822060408051610100808201835260078802909301805482526001810154828601526002810154828401526003810154606083015260048101546080830152600581015460ff8116151560a0840152939093046001600160a01b031660c08201526006830180548351818702810187019094528084529195939460e08701949192919084015b8282101561397c576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101613934565b50505050815250508152602001906001019061389e565b50505050815260200160118201805480602002602001604051908101604052809291908181526020016000905b82821015613a15576000848152602090819020604080516060810182526003860290920180546001600160a01b03168352600180820154848601526002909101549183019190915290835290920191016139c0565b505050915250909392505050565b613a2c826143e9565b33600090815260146020526040902054821115613a5b5760405162461bcd60e51b8152600401610854906157dd565b336000908152601460205260408120548190613a779085614378565b33600090815260146020526040812060010154929450909250908190613a9d9087614557565b6001600160a01b038716600090815260146020526040812060020154929450909250908190613acc9089614557565b915091508460146000336001600160a01b03166001600160a01b03168152602001908152602001600020600001819055508260146000336001600160a01b03166001600160a01b03168152602001908152602001600020600101819055508060146000896001600160a01b03166001600160a01b031681526020019081526020016000206002018190555060156000336001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280336001600160a01b03168152602001896001600160a01b031681526020018a815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201555050858015613c425750835b8015613c4b5750815b613c675760405162461bcd60e51b8152600401610854906156cb565b60405188906001600160a01b0389169033907f5f4252e421e3044a5807ef34894e8c440691ce44e43d817a276586b7e2fe58f490600090a45050505050505050565b613cb1614299565b601154613cbf906001615a28565b60118190556000818152601260205260409020908155600c01613ce2868261589c565b506011546000908152601260205260409020600901613d01858261589c565b506011546000908152601260205260409020600a01613d20848261589c565b506011546000908152601260205260409020600b01613d3f838261589c565b506011546000908152601260205260409020600d01613d5e828261589c565b506011805460009081526012602052604080822060030180546001600160a01b031990811633179091558354835281832042600191909101558354835281832060040180546001600160a01b038f811691909316179055835483528183206008908101805460ff19169055935483529120909101805461ff00191690556006541615613fbd57600654604080516361d027b360e01b815290516000926001600160a01b0316916361d027b39160048083019260209291908290030181865afa158015613e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e52919061595c565b6001600160a01b031614613fbd57600654604051630d1ffcad60e31b81526001600160a01b038b8116600483015260016024830152909116906368ffe56890604401602060405180830381865afa158015613eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed59190615791565b1515600114613ef65760405162461bcd60e51b815260040161085490615752565b600086118015613f0e57506001600160a01b03881615155b15613fbd57600654604051630d1ffcad60e31b81526001600160a01b038a8116600483015260006024830152909116906368ffe56890604401602060405180830381865afa158015613f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f889190615791565b1515600114613fbd5760405162461bcd60e51b81526020600482015260016024820152603760f81b6044820152606401610854565b6001600160a01b038816156140d1578915613fea5760405162461bcd60e51b8152600401610854906156cb565b613ff3876143e9565b613ffc866143e9565b6040516323b872dd60e01b81526001600160a01b038916906323b872dd9061402c90339030908c9060040161576d565b6020604051808303816000875af115801561404b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406f9190615791565b61407857600080fd5b601180546000908152601260205260408082206006018a90558254825280822060050180546001600160a01b0319166001600160a01b038d161790558254825280822060070189905591548152908120600201556141e4565b6000861180156140df575089155b806140f35750851580156140f3575060008a115b61410f5760405162461bcd60e51b815260040161085490615737565b851561413e576011805460009081526012602052604080822060070189905591548152908120600201556141e4565b601154600090815260126020526040908190206002018b9055516323b872dd60e01b81526001600160a01b038a16906323b872dd9061418590339030908f9060040161576d565b6020604051808303816000875af11580156141a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c89190615791565b6141e45760405162461bcd60e51b81526004016108549061571c565b60115460009081526012602052604090819020549051601390614208908890615a3b565b908152604080516020928190038301812093909355601154600090815260129092529020805433927fda7373fb6daae5155a03e1cf39a2bfb2fa01f4dea774f507efd8634a14e88b73926142629291600c90910190615a57565b60405180910390a26142746001600255565b50505050505050505050565b6001546001600160a01b0316331461429757600080fd5b565b60028054036142bb57604051633ee5aeb560e01b815260040160405180910390fd5b60028055565b6000818152601260205260409020600301546001600160a01b031633146120df5760405162461bcd60e51b8152600401610854906156cb565b6143038261439e565b600e546000838152601260205260409020600101548215159161432591615a28565b421014610ce15760405162461bcd60e51b8152600401610854906156cb565b600082815260126020526040902060070154151581151514610ce15760405162461bcd60e51b8152600401610854906156cb565b6000808383111561438e57506000905080614397565b50600190508183035b9250929050565b6000818152601260205260409020600301546001600160a01b03166120df5760405162461bcd60e51b81526020600482015260016024820152602160f91b6044820152606401610854565b600081116120df5760405162461bcd60e51b8152600401610854906157dd565b60008383028160001985870982811083820303915050806000036144405783828161443657614436615aea565b04925050506144c7565b8084116144605760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008281526012602052604090206008015460ff6201000090910416151581151514610ce15760405162461bcd60e51b81526020600482015260016024820152602960f91b6044820152606401610854565b600081815260126020526040902060080154610100900460ff16156120df5760405162461bcd60e51b8152600401610854906156cb565b60008083830184811015614572576000809250925050614397565b60019590945092505050565b60008181526012602052604090206008015460ff16156120df5760405162461bcd60e51b815260040161085490615701565b6000828152601260205260409020601001546145ce90600190615992565b811115610ce15760405162461bcd60e51b8152600401610854906157dd565b6000808260000361460357506000905080614397565b600183858161461457614614615aea565b04915091509250929050565b336000908152601460205260408120600281015490546146409190615a28565b905090565b600061465683836305f5e100614409565b90505b92915050565b600081815260126020526040902060118101541561477a5760005b601182015461468b90600190615992565b81116147785760008260110182815481106146a8576146a86157c7565b90600052602060002090600302019050600081600101541115614765576004808401548254600184015460405163a9059cbb60e01b81526001600160a01b039384169463a9059cbb946146fe94169291016157ae565b6020604051808303816000875af115801561471d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147419190615791565b61475d5760405162461bcd60e51b81526004016108549061571c565b600060018201555b508061477081615a0f565b91505061467a565b505b60088101805461ff00191661010017905560068101541561482c576005810154600682015460405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916147cd913391906004016157ae565b6020604051808303816000875af11580156147ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148109190615791565b61482c5760405162461bcd60e51b815260040161085490615737565b60405182907fad393e14624be2127b186bd43fda5b104ec93600520adb509a453bd5bc2d77c890600090a25050565b6000818152601260205260409020600481015460088201805461ff00191661010017905560028201546006546001600160a01b03928316921615614afe57600654604080516361d027b360e01b815290516000926001600160a01b0316916361d027b39160048083019260209291908290030181865afa1580156148e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614907919061595c565b6001600160a01b031614158015614989575060065460408051633f30663d60e21b815290516000926001600160a01b03169163fcc198f49160048083019260209291908290030181865afa158015614963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149879190615979565b115b15614afe5760006149eb8460020154600660009054906101000a90046001600160a01b03166001600160a01b031663fcc198f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a49573d6000803e3d6000fd5b90506149f78183615992565b9150826001600160a01b031663a9059cbb600660009054906101000a90046001600160a01b03166001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa158015614a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a7f919061595c565b836040518363ffffffff1660e01b8152600401614a9d9291906157ae565b6020604051808303816000875af1158015614abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ae09190615791565b614afc5760405162461bcd60e51b815260040161085490615701565b505b600383015460405163a9059cbb60e01b81526001600160a01b038481169263a9059cbb92614b34929091169085906004016157ae565b6020604051808303816000875af1158015614b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b779190615791565b614b935760405162461bcd60e51b8152600401610854906156e6565b60405184907fad393e14624be2127b186bd43fda5b104ec93600520adb509a453bd5bc2d77c890600090a250505050565b60008060408385031215614bd757600080fd5b50508035926020909101359150565b6001600160a01b03811681146120df57600080fd5b8035614c0681614be6565b919050565b60008060408385031215614c1e57600080fd5b8235614c2981614be6565b946020939093013593505050565b80151581146120df57600080fd5b60008060408385031215614c5857600080fd5b8235614c2981614c37565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614c8a57600080fd5b813567ffffffffffffffff80821115614ca557614ca5614c63565b604051601f8301601f19908116603f01168101908282118183101715614ccd57614ccd614c63565b81604052838152866020858801011115614ce657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600060e0888a031215614d2157600080fd5b87359650602088013567ffffffffffffffff80821115614d4057600080fd5b614d4c8b838c01614c79565b975060408a0135915080821115614d6257600080fd5b614d6e8b838c01614c79565b965060608a0135915080821115614d8457600080fd5b614d908b838c01614c79565b955060808a0135915080821115614da657600080fd5b614db28b838c01614c79565b945060a08a0135915080821115614dc857600080fd5b50614dd58a828b01614c79565b92505060c0880135905092959891949750929550565b600080600060608486031215614e0057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e2557600080fd5b614e3186828701614c79565b9150509250925092565b600060208284031215614e4d57600080fd5b5035919050565b600060208284031215614e6657600080fd5b81356144c781614be6565b60008083601f840112614e8357600080fd5b50813567ffffffffffffffff811115614e9b57600080fd5b6020830191508360208260051b850101111561439757600080fd5b60008060008060008060808789031215614ecf57600080fd5b8635955060208701359450604087013567ffffffffffffffff80821115614ef557600080fd5b614f018a838b01614e71565b90965094506060890135915080821115614f1a57600080fd5b50614f2789828a01614e71565b979a9699509497509295939492505050565b602080825282518282018190526000919060409081850190868401855b82811015614f9157815180516001600160a01b0390811686528782015116878601528501518585015260609093019290850190600101614f56565b5091979650505050505050565b60005b83811015614fb9578181015183820152602001614fa1565b50506000910152565b60008151808452614fda816020860160208601614f9e565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015614f915782840389528151610140815181875261502f82880182614fc2565b91505086820151868203888801526150478282614fc2565b915050604080830151878303828901526150618382614fc2565b925050506060808301518783038289015261507c8382614fc2565b92505050608080830151878303828901526150978382614fc2565b9250505060a0808301516150ae8289018215159052565b505060c08281015115159087015260e0808301516001600160a01b0316908701526101008083015190870152610120918201519190950152978401979084019060010161500c565b600081518084526020808501945080840160005b8381101561513a57815180516001600160a01b03168852830151838801526040909601959082019060010161510a565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015614f91578284038952815180518552858101518686015260408082015190860152606080820151908601526080808201519086015260a08082015115159086015260c0808201516001600160a01b03169086015260e090810151610100918601829052906151d7818701836150f6565b9a87019a9550505090840190600101615163565b600081518084526020808501945080840160005b8381101561513a57815180516001600160a01b03168852838101518489015260409081015190880152606090960195908201906001016151ff565b602081528151602082015260208201516040820152604082015160608201526000606083015161527560808401826001600160a01b03169052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e083015260e08301516101008181850152808501519150506101206152ce8185018315159052565b84015190506101406152e38482018315159052565b84015190506101606152f88482018315159052565b8085015191505061028061018081818601526153186102a0860184614fc2565b9250808601519050601f196101a08187860301818801526153398584614fc2565b9450808801519250506101c08187860301818801526153588584614fc2565b9450808801519250506101e08187860301818801526153778584614fc2565b9450808801519250506102008187860301818801526153968584614fc2565b9450808801519250506102208281880152808801519250506102408187860301818801526153c48584614fee565b9450808801519250506102608187860301818801526153e38584615145565b9088015187820390920184880152935090506153ff83826151eb565b9695505050505050565b6000806040838503121561541c57600080fd5b82359150602083013561542e81614be6565b809150509250929050565b60006020828403121561544b57600080fd5b813567ffffffffffffffff81111561546257600080fd5b61546e84828501614c79565b949350505050565b6000806000806000806000806000806101408b8d03121561549657600080fd5b8a3599506154a660208c01614bfb565b98506154b460408c01614bfb565b975060608b0135965060808b0135955060a08b013567ffffffffffffffff808211156154df57600080fd5b6154eb8e838f01614c79565b965060c08d013591508082111561550157600080fd5b61550d8e838f01614c79565b955060e08d013591508082111561552357600080fd5b61552f8e838f01614c79565b94506101008d013591508082111561554657600080fd5b6155528e838f01614c79565b93506101208d013591508082111561556957600080fd5b506155768d828e01614c79565b9150509295989b9194979a5092959850565b60006020828403121561559a57600080fd5b815160ff811681146144c757600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156155fc5781600019048211156155e2576155e26155ab565b808516156155ef57918102915b93841c93908002906155c6565b509250929050565b60008261561357506001614659565b8161562057506000614659565b816001811461563657600281146156405761565c565b6001915050614659565b60ff841115615651576156516155ab565b50506001821b614659565b5060208310610133831016604e8410600b841016171561567f575081810a614659565b61568983836155c1565b806000190482111561569d5761569d6155ab565b029392505050565b600061465660ff841683615604565b8082028115828204841417614659576146596155ab565b6020808252600190820152603160f81b604082015260600190565b6020808252600190820152601960f91b604082015260600190565b6020808252600190820152603360f81b604082015260600190565b6020808252600190820152600d60fa1b604082015260600190565b6020808252600190820152603560f81b604082015260600190565b6020808252600190820152601b60f91b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156157a357600080fd5b81516144c781614c37565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6020808252600190820152600360fc1b604082015260600190565b6000600160ff1b820161580d5761580d6155ab565b5060000390565b600181811c9082168061582857607f821691505b60208210810361584857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f8d57600081815260208120601f850160051c810160208610156158755750805b601f850160051c820191505b8181101561589457828155600101615881565b505050505050565b815167ffffffffffffffff8111156158b6576158b6614c63565b6158ca816158c48454615814565b8461584e565b602080601f8311600181146158ff57600084156158e75750858301515b600019600386901b1c1916600185901b178555615894565b600085815260208120601f198616915b8281101561592e5788860151825594840194600190910190840161590f565b508582101561594c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561596e57600080fd5b81516144c781614be6565b60006020828403121561598b57600080fd5b5051919050565b81810381811115614659576146596155ab565b600060018060a01b038086168352606060208401526159c76060840186614fc2565b838103604085015281855116815260208501516020820152604085015160408201526060850151915060806060820152615a046080820183614fc2565b979650505050505050565b600060018201615a2157615a216155ab565b5060010190565b80820180821115614659576146596155ab565b60008251615a4d818460208701614f9e565b9190910192915050565b8281526000602060408184015260008454615a7181615814565b8060408701526060600180841660008114615a935760018114615aad57615adb565b60ff1985168984015283151560051b890183019550615adb565b896000528660002060005b85811015615ad35781548b8201860152908301908801615ab8565b8a0184019650505b50939998505050505050505050565b634e487b7160e01b600052601260045260246000fdfea2646970667358221220c685cd0e3168e36c6a56f2a8279044304111bcc2a4450f29294614b8081065f364736f6c63430008140033","contractName":"NetworkV2"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/Ownable.ts b/src/interfaces/generated/abi/Ownable.ts new file mode 100644 index 00000000..077bdf49 --- /dev/null +++ b/src/interfaces/generated/abi/Ownable.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","contractName":"Ownable"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/StakingContract.ts b/src/interfaces/generated/abi/StakingContract.ts new file mode 100644 index 00000000..c4d9c942 --- /dev/null +++ b/src/interfaces/generated/abi/StakingContract.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_nftAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"availableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"changeTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startDate","type":"uint256"},{"internalType":"uint256","name":"_endDate","type":"uint256"},{"internalType":"uint256","name":"_totalMaxAmount","type":"uint256"},{"internalType":"uint256","name":"_individualMinimumAmount","type":"uint256"},{"internalType":"uint256","name":"_individualMaximumAmount","type":"uint256"},{"internalType":"uint256","name":"_APR","type":"uint256"},{"internalType":"bool","name":"_lockedUntilFinalization","type":"bool"}],"name":"createProduct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc721","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"futureLockedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_APR","type":"uint256"},{"internalType":"uint256","name":"_startDate","type":"uint256"},{"internalType":"uint256","name":"_endDate","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getAPRAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getMySubscriptions","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_product_id","type":"uint256"}],"name":"getProduct","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProductIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_subscription_id","type":"uint256"},{"internalType":"uint256","name":"_product_id","type":"uint256"}],"name":"getSubscription","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"heldTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"mySubscriptions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"productIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"products","outputs":[{"internalType":"uint256","name":"createdAt","type":"uint256"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"totalMaxAmount","type":"uint256"},{"internalType":"uint256","name":"individualMinimumAmount","type":"uint256"},{"internalType":"uint256","name":"individualMaximumAmount","type":"uint256"},{"internalType":"uint256","name":"APR","type":"uint256"},{"internalType":"uint256","name":"currentAmount","type":"uint256"},{"internalType":"bool","name":"lockedUntilFinalization","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"safeGuardAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_product_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"subscribeProduct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"subscriptions","outputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"productId","type":"uint256"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"subscriberAddress","type":"address"},{"internalType":"uint256","name":"APR","type":"uint256"},{"internalType":"bool","name":"finalized","type":"bool"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_product_id","type":"uint256"},{"internalType":"uint256","name":"_subscription_id","type":"uint256"}],"name":"withdrawSubscription","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x6080604052600060045560006005553480156200001b57600080fd5b5060405162001f1b38038062001f1b8339810160408190526200003e91620000a4565b600080546001600160a81b0319166101003302179055600680546001600160a01b03199081166001600160a01b03948516179091556007805490911691909216179055620000dc565b80516001600160a01b03811681146200009f57600080fd5b919050565b60008060408385031215620000b857600080fd5b620000c38362000087565b9150620000d36020840162000087565b90509250929050565b611e2f80620000ec6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637e6288f1116100b8578063b90c72ae1161007c578063b90c72ae1461046d578063b9db15b414610480578063bca6ce64146104aa578063c9cda91f146104bd578063cb51bba9146104d0578063f2fde38b146104e357600080fd5b80637e6288f1146103675780638da5cb5b1461037a578063a09ab76514610392578063a461efb9146103a5578063b6ee04fa1461045a57600080fd5b80635c975abb1161010a5780635c975abb1461025f57806369bb4dc2146102755780636ede83321461028b57806376f7ca6e14610293578063785e9e861461029b5780637acc0b20146102c657600080fd5b80630ea52b6c14610147578063130d89451461015c5780632109038014610185578063365cfcbf1461019857806347428e7b14610257575b600080fd5b61015a610155366004611b51565b6104f6565b005b61016f61016a366004611b8f565b610a5b565b60405161017c9190611be5565b60405180910390f35b61015a610193366004611b51565b610ac7565b6102086101a6366004611b51565b60086020818152600093845260408085209091529183529120805460018201546002830154600384015460048501546005860154600687015460078801549790980154959794969395929491936001600160a01b039091169260ff9091169089565b60408051998a5260208a019890985296880195909552606087019390935260808601919091526001600160a01b031660a085015260c0840152151560e08301526101008201526101200161017c565b61016f611266565b60005460ff16604051901515815260200161017c565b61027d6112be565b60405190815260200161017c565b61027d6112e2565b60055461027d565b6006546102ae906001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b6103216102d4366004611bf8565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460089097015495969495939492939192909160ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e083015215156101008201526101200161017c565b61027d610375366004611c11565b611354565b6000546102ae9061010090046001600160a01b031681565b61015a6103a0366004611c51565b6113b5565b6102086103b3366004611b51565b60009081526008602081815260408084209484529381529183902083516101208101855281548082526001830154948201859052600283015495820186905260038301546060830181905260048401546080840181905260058501546001600160a01b031660a08501819052600686015460c08601819052600787015460ff16151560e0870181905296909701546101009095018590529298969796919590949293909291565b61027d610468366004611cb1565b611595565b61015a61047b366004611b8f565b6115c6565b61049361048e366004611bf8565b6116c7565b60405161017c9b9a99989796959493929190611cdb565b6007546102ae906001600160a01b031681565b61015a6104cb366004611b8f565b611880565b61027d6104de366004611bf8565b6118b2565b61015a6104f1366004611b8f565b6118d3565b6104fe611954565b60008281526001602052604081206002015490036105595760405162461bcd60e51b8152602060048201526013602482015272141c9bd91d58dd081a185cc8195e1c1a5c9959606a1b60448201526064015b60405180910390fd5b600082815260086020908152604080832084845290915281206003015490036105bd5760405162461bcd60e51b8152602060048201526016602482015275141c9bd91d58dd08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610550565b600082815260086020908152604080832084845290915290206007015460ff16156106355760405162461bcd60e51b815260206004820152602260248201527f537562736372697074696f6e207761732066696e616c697a656420616c726561604482015261647960f01b6064820152608401610550565b60008281526008602090815260408083208484529091529020600501546001600160a01b031633146106a95760405162461bcd60e51b815260206004820152601a60248201527f4e6f742074686520737562736372697074696f6e206f776e65720000000000006044820152606401610550565b6000828152600860208181526040808420858552825292839020835161012081018552815481526001820154928101929092526002810154938201849052600381015460608301526004810154608083015260058101546001600160a01b031660a0830152600681015460c0830152600781015460ff16151560e0830152909101546101008201529042116107805760405162461bcd60e51b815260206004820152601b60248201527f4e6f772069732062656c6f7720746865207374617274206461746500000000006044820152606401610550565b600083815260016020526040902060020154429081106107b25750600083815260016020526040902060020154610823565b60008481526001602052604090206008015460ff16156108235760405162461bcd60e51b815260206004820152602660248201527f50726f647563742068617320746f20636c6f736520746f2062652077697468646044820152651c985ddb995960d21b6064820152608401610550565b600061083d8360c001518460400151848660800151611354565b90506000811161089a5760405162461bcd60e51b815260206004820152602260248201527f41505220616d6f756e742068617320746f20626520626967676572207468616e604482015261020360f41b6064820152608401610550565b60808301516000906108ac908361197a565b91505060006108ed6108e28660c001518760400151600160008c8152602001908152602001600020600201548960800151611354565b60808701519061197a565b9150506000821161094c5760405162461bcd60e51b8152602060048201526024808201527f546f74616c20416d6f756e742068617320746f206265206269676765722074686044820152630616e20360e41b6064820152608401610550565b60008781526008602081815260408084208a85529091529182902060078101805460ff19166001179055600381018790550183905560065460a0870151915163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905291169063a9059cbb906044016020604051808303816000875af11580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190611d86565b610a3d5760405162461bcd60e51b8152602060048201526013602482015272151c985b9cd9995c881a185cc819985a5b1959606a1b6044820152606401610550565b600554600090610a4d90836119a3565b600555505050505050505050565b6001600160a01b038116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610abb57602002820191906000526020600020905b815481526020019060010190808311610aa7575b50505050509050919050565b610acf611954565b4281610b1d5760405162461bcd60e51b815260206004820152601e60248201527f416d6f756e742068617320746f20626520626967676572207468616e203000006044820152606401610550565b6007546001600160a01b031615610be8576007546040516370a0823160e01b81523360048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611da3565b11610be85760405162461bcd60e51b815260206004820152601860248201527f4d75737420686f6c64206174206c656173742031204e465400000000000000006044820152606401610550565b6000838152600160205260409020600201544210610c485760405162461bcd60e51b815260206004820152601e60248201527f416c726561647920656e6465642074686520737562736372697074696f6e00006044820152606401610550565b60008381526001602081905260409091200154421015610c775750600082815260016020819052604090912001545b600654604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e90604401602060405180830381865afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190611da3565b821115610d5e5760405162461bcd60e51b815260206004820152603860248201527f5370656e646572206e6f7420617574686f72697a656420746f207370656e642060448201527f7468697320746f6b656e732c20616c6c6f7720666972737400000000000000006064820152608401610550565b600083815260016020526040902060070154610d7b908390611dbc565b60008481526001602052604090206003015411610dda5760405162461bcd60e51b815260206004820152601a60248201527f4d617820416d6f756e742077617320616c7265616479206869740000000000006044820152606401610550565b600083815260016020526040902060040154821015610e3b5760405162461bcd60e51b815260206004820152601e60248201527f48617320746f2062652068696768676572207468616e206d696e696d756d00006044820152606401610550565b600083815260016020526040902060050154821115610e9c5760405162461bcd60e51b815260206004820152601e60248201527f48617320746f20626520736d616c6c6572207468616e206d6178696d756d00006044820152606401610550565b60008381526001602052604081206006810154600290910154610ec29190849086611354565b905080610ecd6112be565b1015610f415760405162461bcd60e51b815260206004820152603c60248201527f417661696c61626c6520546f6b656e732068617320746f20626520686967686560448201527f72207468616e20746865206675747572652041505220416d6f756e74000000006064820152608401610550565b6006546040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc9190611d86565b610ffa5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8811985a5b1959608a1b6044820152606401610550565b6000611006848361197a565b91505060006110208260055461197a90919063ffffffff16565b60058190556004549092509050611038816001611dbc565b6004819055506000604051806101200160405280838152602001898152602001878152602001600160008b8152602001908152602001600020600201548152602001888152602001336001600160a01b03168152602001600160008b81526020019081526020016000206006015481526020016000151581526020016000815250905060036000336001600160a01b03166001600160a01b0316815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091505560016000898152602001908152602001600020600a0182908060018154018082558091505060019003906000526020600020016000909190919091505580600860008a81526020019081526020016000206000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c0820151816006015560e08201518160070160006101000a81548160ff021916908315150217905550610100820151816008015590505086600160008a8152602001908152602001600020600701546112229190611dbc565b60009889526001602081815260408b2060078101939093556009909201805491820181558a52982090970180546001600160a01b0319163317905550505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156112b457602002820191906000526020600020905b8154815260200190600101908083116112a0575b5050505050905090565b6000806112db6112cd60055490565b6112d56112e2565b906119a3565b9392505050565b6006546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f9190611da3565b905090565b60008061136184866119a3565b91506000905061137182886119c5565b91506000905061138182866119c5565b9150600090506113966301e1338060646119c5565b9150600090506113a68383611a02565b9b9a5050505050505050505050565b6113bd611954565b6113c5611a35565b8542106113d157600080fd5b864211156113de57600080fd5b8587106113ea57600080fd5b600085116113f757600080fd5b6000841161140457600080fd5b6000831161141157600080fd5b83851161141d57600080fd5b82851161142957600080fd5b6000821161143657600080fd5b60608060006040518061016001604052804281526020018b81526020018a8152602001898152602001888152602001878152602001868152602001600081526020018515158152602001848152602001838152509050600060028054905060016114a09190611dbc565b60028054600180820183557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace909101839055600083815260208281526040918290208751815587820151938101939093559086015192820192909255606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e0850151600782015561010085015160088201805460ff191691151591909117905561012085015180519394508593919261156892600985019290910190611a9c565b50610140820151805161158591600a840191602090910190611b01565b5050505050505050505050505050565b600360205281600052604060002081815481106115b157600080fd5b90600052602060002001600091509150505481565b6115ce611a35565b6115d6611a79565b6006546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90839083906370a0823190602401602060405180830381865afa158015611628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164c9190611da3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bb9190611d86565b6116c457600080fd5b50565b60008060008060008060008060006060806000600160008e81526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820160009054906101000a900460ff16151515158152602001600982018054806020026020016040519081016040528092919081815260200182805480156117bd57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161179f575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561181557602002820191906000526020600020905b815481526020019060010190808311611801575b5050505050815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e001518861010001518961012001518a61014001519b509b509b509b509b509b509b509b509b509b509b505091939597999b90929496989a50565b611888611a35565b611890611a79565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600281815481106118c257600080fd5b600091825260209091200154905081565b6118db611a35565b6001600160a01b0381166118ee57600080fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60005460ff16156119785760405163d93c066560e01b815260040160405180910390fd5b565b6000808383018481101561199557600080925092505061199c565b6001925090505b9250929050565b600080838311156119b95750600090508061199c565b50600193919092039150565b600080836000036119dc575060019050600061199c565b838302838582816119ef576119ef611de3565b041461199557600080925092505061199c565b60008082600003611a185750600090508061199c565b6001838581611a2957611a29611de3565b04915091509250929050565b60005461010090046001600160a01b031633146119785760405162461bcd60e51b815260206004820152600260248201526127a960f11b6044820152606401610550565b60005460ff1661197857604051638dfc202b60e01b815260040160405180910390fd5b828054828255906000526020600020908101928215611af1579160200282015b82811115611af157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611abc565b50611afd929150611b3c565b5090565b828054828255906000526020600020908101928215611af1579160200282015b82811115611af1578251825591602001919060010190611b21565b5b80821115611afd5760008155600101611b3d565b60008060408385031215611b6457600080fd5b50508035926020909101359150565b80356001600160a01b0381168114611b8a57600080fd5b919050565b600060208284031215611ba157600080fd5b6112db82611b73565b600081518084526020808501945080840160005b83811015611bda57815187529582019590820190600101611bbe565b509495945050505050565b6020815260006112db6020830184611baa565b600060208284031215611c0a57600080fd5b5035919050565b60008060008060808587031215611c2757600080fd5b5050823594602084013594506040840135936060013592509050565b80151581146116c457600080fd5b600080600080600080600060e0888a031215611c6c57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c0880135611ca181611c43565b8091505092959891949750929550565b60008060408385031215611cc457600080fd5b611ccd83611b73565b946020939093013593505050565b60006101608083018e845260208e818601528d60408601528c60608601528b60808601528a60a08601528960c08601528860e086015287151561010086015282610120860152819250865180835261018086019350818801925060005b81811015611d5d5783516001600160a01b031685529382019392820192600101611d38565b50505050828103610140840152611d748185611baa565b9e9d5050505050505050505050505050565b600060208284031215611d9857600080fd5b81516112db81611c43565b600060208284031215611db557600080fd5b5051919050565b80820180821115611ddd57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052601260045260246000fdfea26469706673582212207269ee0da13ce65a9462675f1b88ef6d0095291ec97a768c7e3757b806ee131764736f6c63430008140033","contractName":"StakingContract"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/generated/abi/Votable.ts b/src/interfaces/generated/abi/Votable.ts new file mode 100644 index 00000000..5ef4309c --- /dev/null +++ b/src/interfaces/generated/abi/Votable.ts @@ -0,0 +1,2 @@ +const artifact = {"abi":[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":true,"internalType":"uint256","name":"pollID","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":false,"internalType":"uint256","name":"votingLength","type":"uint256"}],"name":"pollCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"pollStatusUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"pollID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"vote","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"voteCasted","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bank","outputs":[{"internalType":"uint256","name":"tokenBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pollID","type":"uint256"},{"internalType":"uint256","name":"_voteId","type":"uint256"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_description","type":"string"},{"internalType":"uint256","name":"_voteLength","type":"uint256"},{"internalType":"uint256[]","name":"options","type":"uint256[]"}],"name":"createPoll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pollID","type":"uint256"}],"name":"endPoll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"}],"name":"getLockedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"}],"name":"getPollHistory","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pollID","type":"uint256"},{"internalType":"address","name":"_voter","type":"address"}],"name":"getPollInfoForVoter","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pollID","type":"uint256"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getPollOptionById","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pollID","type":"uint256"}],"name":"getPoolInformation","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum Votable.PollStatus","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pollID","type":"uint256"}],"name":"getPoolWinner","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"}],"name":"getTokenStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pollCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"polls","outputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"enum Votable.PollStatus","name":"status","type":"uint8"},{"internalType":"uint256","name":"optionsSize","type":"uint256"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"uint256","name":"winnerId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokens","type":"uint256"}],"name":"stakeVotingTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pollID","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"userHasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokens","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506040516117bb3803806117bb83398101604081905261002f91610067565b6001600160a01b03811661004257600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055610097565b60006020828403121561007957600080fd5b81516001600160a01b038116811461009057600080fd5b9392505050565b611715806100a66000396000f3fe608060405234801561001057600080fd5b506004361061010a5760003560e01c80635fc48d7e116100a25780638a0ce67d116100715780638a0ce67d146102875780639207891d1461029a578063929ec537146102a3578063ac2f0074146102b6578063f43b8778146102db57600080fd5b80635fc48d7e146101ec5780636cee7be51461020f578063785e9e8614610237578063896e1da91461026257600080fd5b80632c0a3f89116100de5780632c0a3f8914610193578063315a095d146101a6578063529a1baf146101b95780635beed676146101d957600080fd5b80623c59fd1461010f5780630da65600146101355780630de88fd81461014a5780630ed70ed11461016a575b600080fd5b61012261011d36600461114c565b6102ee565b6040519081526020015b60405180910390f35b61014861014336600461121e565b6104b4565b005b61015d610158366004611253565b610668565b60405161012c9190611275565b610122610178366004611253565b6001600160a01b031660009081526001602052604090205490565b6101486101a13660046112b9565b6106d7565b6101486101b436600461121e565b610951565b6101226101c7366004611253565b60016020526000908152604090205481565b6101226101e73660046112b9565b610a91565b6101ff6101fa3660046112db565b610ae3565b604051901515815260200161012c565b61022261021d3660046112db565b610b43565b6040805192835260208301919091520161012c565b60035461024a906001600160a01b031681565b6040516001600160a01b03909116815260200161012c565b61027561027036600461121e565b610bf5565b60405161012c96959493929190611385565b61022261029536600461121e565b610d6b565b61012260025481565b6101226102b1366004611253565b610dc3565b6102c96102c436600461121e565b610e5a565b60405161012c9695949392919061140c565b6101486102e936600461121e565b610f26565b60008084116103445760405162461bcd60e51b815260206004820152601e60248201527f54686520766f74696e6720706572696f642063616e6e6f7420626520302e000060448201526064015b60405180910390fd5b600182116103945760405162461bcd60e51b815260206004820181905260248201527f4f7074696f6e73206861766520746f20626520686967686572207468616e2031604482015260640161033b565b600280549060006103a48361146c565b9091555050600254600090815260208190526040812080546001600160a81b0319163360ff60a01b1916178155905b8381101561041d578484828181106103ed576103ed611485565b600084815260028601602090815260409091209102929092013590915550806104158161146c565b9150506103d3565b50600061042a428761105a565b91506000905061043b826001611083565b60018501879055600685018190559150506004830161045b898b8361153a565b50600254336001600160a01b03167f7b419a5af714030ff3c227818ce7b2a9864a0c7ed2d6315e1db36e7c70c3d2818b8b8b60405161049c939291906115fb565b60405180910390a35050600254979650505050505050565b6003546040516370a0823160e01b815233600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190611634565b101561056e5760405162461bcd60e51b815260206004820181905260248201527f5573657220646f6573206e6f74206861766520656e6f75676820746f6b656e73604482015260640161033b565b6003546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156105c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e9919061164d565b6106415760405162461bcd60e51b8152602060048201526024808201527f5573657220646964206e6f7420617070726f766520746f6b656e207472616e736044820152633332b91760e11b606482015260840161033b565b336000908152600160205260408120805483929061066090849061166f565b909155505050565b6001600160a01b0381166000908152600160209081526040918290206002018054835181840281018401909452808452606093928301828280156106cb57602002820191906000526020600020905b8154815260200190600101908083116106b7575b50505050509050919050565b816000811180156106ea57506002548111155b6107065760405162461bcd60e51b815260040161033b90611688565b6000838152602081905260408120908154600160a01b900460ff16600181111561073257610732611307565b146107735760405162461bcd60e51b81526020600482015260116024820152702837b636103430b99032bc3834b932b21760791b604482015260640161033b565b61077d8433610ae3565b156107ca5760405162461bcd60e51b815260206004820152601760248201527f557365722068617320616c726561647920766f7465642e000000000000000000604482015260640161033b565b428160060154116107da57600080fd5b8060010154831061082d5760405162461bcd60e51b815260206004820152601b60248201527f566f7465206f7074696f6e206973206e6f7420617661696c626c650000000000604482015260640161033b565b3360009081526001602081815260408084208054898652818501845282862055600281018054948501815585528285209093018890559154868452600385019091529082205461087c9161105a565b60008681526003850160209081526040808320849055805160608101825260018082528184018b815233808752828652848720805485870190815282895260088d0188528689209551865460ff1916901515178655925185850155915160029094019390935560058a01805480840182559087528587200180546001600160a01b03191684179055948290528352925481518a815292830152805193955089945091927f24e8f28bcf1dbc2f2cbdaf38b4ed8c435d3ac3b055bd15be18b06645b29dba1d929181900390910190a35050505050565b600061095c33610dc3565b9050818161097f336001600160a01b031660009081526001602052604090205490565b61098991906116b6565b10156109eb5760405162461bcd60e51b815260206004820152602b60248201527f5573657220697320747279696e6720746f20776974686472617720746f6f206d60448201526a30b73c903a37b5b2b7399760a91b606482015260840161033b565b3360009081526001602052604081208054849290610a0a9084906116b6565b909155505060035460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a84919061164d565b610a8d57600080fd5b5050565b600082600081118015610aa657506002548111155b610ac25760405162461bcd60e51b815260040161033b90611688565b50506000918252602082815260408084209284526002909201905290205490565b600082600081118015610af857506002548111155b610b145760405162461bcd60e51b815260040161033b90611688565b50506000918252602082815260408084206001600160a01b039390931684526008909201905290205460ff1690565b60008083600081118015610b5957506002548111155b610b755760405162461bcd60e51b815260040161033b90611688565b60008086815260208190526040902054600160a01b900460ff166001811115610ba057610ba0611307565b03610baa57600080fd5b610bb48585610ae3565b610bbd57600080fd5b5050506000918252602082815260408084206001600160a01b0393909316845260089092019052902060018101546002909101549091565b6000806000606080600086600081118015610c1257506002548111155b610c2e5760405162461bcd60e51b815260040161033b90611688565b60008881526020819052604090208054600182015460068301546004840180546001600160a01b03851695600160a01b90950460ff16949192600590920191908390610c79906114b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca5906114b1565b8015610cf25780601f10610cc757610100808354040283529160200191610cf2565b820191906000526020600020905b815481529060010190602001808311610cd557829003601f168201915b5050505050925081805480602002602001604051908101604052809291908181526020018280548015610d4e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d30575b505050505091509650965096509650965096505091939550919395565b60008082600081118015610d8157506002548111155b610d9d5760405162461bcd60e51b815260040161033b90611688565b600084815260208190526040902060070154610db98582610a91565b9250925050915091565b6001600160a01b038116600090815260016020526040812081805b6002830154811015610e52576000836002018281548110610e0157610e01611485565b9060005260206000200154905082846001016000838152602001908152602001600020541115610e3f57600081815260018501602052604090205492505b5080610e4a8161146c565b915050610dde565b509392505050565b6000602081905290815260409020805460018201546004830180546001600160a01b03841694600160a01b90940460ff16939190610e97906114b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec3906114b1565b8015610f105780601f10610ee557610100808354040283529160200191610f10565b820191906000526020600020905b815481529060010190602001808311610ef357829003601f168201915b5050505050908060060154908060070154905086565b80600081118015610f3957506002548111155b610f555760405162461bcd60e51b815260040161033b90611688565b60008083815260208190526040902054600160a01b900460ff166001811115610f8057610f80611307565b14610fcd5760405162461bcd60e51b815260206004820152601860248201527f566f7465206973206e6f7420696e2070726f67726573732e0000000000000000604482015260640161033b565b60008281526020819052604090206006015442101561102e5760405162461bcd60e51b815260206004820152601d60248201527f566f74696e6720706572696f6420686173206e6f742065787069726564000000604482015260640161033b565b611037826110c0565b50506000908152602081905260409020805460ff60a01b1916600160a01b179055565b6000808383018481101561107557600080925092505061107c565b6001925090505b9250929050565b6000808360000361109a575060019050600061107c565b838302838582816110ad576110ad6116c9565b041461107557600080925092505061107c565b6000818152602081815260408083208380526003810190925282205460015b826001015481101561113d576003830160006110fc6001846116b6565b81526020019081526020016000205483600301600083815260200190815260200160002054111561112b578091505b806111358161146c565b9150506110df565b50600790910181905592915050565b60008060008060006060868803121561116457600080fd5b853567ffffffffffffffff8082111561117c57600080fd5b818801915088601f83011261119057600080fd5b81358181111561119f57600080fd5b8960208285010111156111b157600080fd5b602092830197509550908701359350604087013590808211156111d357600080fd5b818801915088601f8301126111e757600080fd5b8135818111156111f657600080fd5b8960208260051b850101111561120b57600080fd5b9699959850939650602001949392505050565b60006020828403121561123057600080fd5b5035919050565b80356001600160a01b038116811461124e57600080fd5b919050565b60006020828403121561126557600080fd5b61126e82611237565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156112ad57835183529284019291840191600101611291565b50909695505050505050565b600080604083850312156112cc57600080fd5b50508035926020909101359150565b600080604083850312156112ee57600080fd5b823591506112fe60208401611237565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6002811061133b57634e487b7160e01b600052602160045260246000fd5b9052565b6000815180845260005b8181101561136557602081850181015186830182015201611349565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03878116825260009060206113a38185018a61131d565b87604085015260c060608501526113bd60c085018861133f565b848103608086015286518082528288019183019060005b818110156113f25783518616835292840192918401916001016113d4565b5050809450505050508260a0830152979650505050505050565b6001600160a01b0387168152611425602082018761131d565b84604082015260c06060820152600061144160c083018661133f565b60808301949094525060a00152949350505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161147e5761147e611456565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806114c557607f821691505b6020821081036114e557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561153557600081815260208120601f850160051c810160208610156115125750805b601f850160051c820191505b818110156115315782815560010161151e565b5050505b505050565b67ffffffffffffffff8311156115525761155261149b565b6115668361156083546114b1565b836114eb565b6000601f84116001811461159a57600085156115825750838201355b600019600387901b1c1916600186901b1783556115f4565b600083815260209020601f19861690835b828110156115cb57868501358255602094850194600190920191016115ab565b50868210156115e85760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b60006020828403121561164657600080fd5b5051919050565b60006020828403121561165f57600080fd5b8151801515811461126e57600080fd5b8082018082111561168257611682611456565b92915050565b6020808252601490820152732737ba1030903b30b634b2103837b6361024b21760611b604082015260600190565b8181038181111561168257611682611456565b634e487b7160e01b600052601260045260246000fdfea2646970667358221220cd9c2e96ad7d1e1f174dd0136db6ad0d30128fae3a0ee39a2e0116e0e65d37d164736f6c63430008140033","contractName":"Votable"} as const; +export default artifact; \ No newline at end of file diff --git a/src/interfaces/ipfs-options.ts b/src/interfaces/ipfs-options.ts deleted file mode 100644 index 746f2424..00000000 --- a/src/interfaces/ipfs-options.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {Options} from 'ipfs-http-client/dist/src/types'; - -export interface IPFSOptions extends Options { - host: string; - port: number; - protocol: "http" | "https"; - headers?: { - [key: string]: string; - }, - auto?: boolean; -} diff --git a/src/interfaces/loophole-pool-info.ts b/src/interfaces/loophole-pool-info.ts deleted file mode 100644 index 507ba6be..00000000 --- a/src/interfaces/loophole-pool-info.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface LoopholePoolInfo { - address: string; - allocPoint: number; - lastRewardBlock: number; - totalPool: string | number; - entryStakeTotal: string | number; - totalDistributedPenalty: string | number; - accLPtokensPerShare: number; -} diff --git a/src/interfaces/loophole-pool-update.ts b/src/interfaces/loophole-pool-update.ts deleted file mode 100644 index 6e97e1a5..00000000 --- a/src/interfaces/loophole-pool-update.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface LoopholePoolUpdate { - blockNumber: number; - lpTokensReward: string | number; - accLPtokensPerShare: number; -} diff --git a/src/interfaces/loophole-user-info.ts b/src/interfaces/loophole-user-info.ts deleted file mode 100644 index 4909d6a8..00000000 --- a/src/interfaces/loophole-user-info.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface LoopholeUserInfo { - entryStake: number; - unstake: number; - entryStakeAdjusted: number; - payRewardMark: number; -} diff --git a/src/interfaces/methods/bounty-token.ts b/src/interfaces/methods/bounty-token.ts deleted file mode 100644 index de7de9a0..00000000 --- a/src/interfaces/methods/bounty-token.ts +++ /dev/null @@ -1,29 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface BountyTokenMethods { - _governor() :ContractCallMethod; - _proposedGovernor() :ContractCallMethod; - approve(to: string, tokenId: number) :ContractSendMethod; - balanceOf(owner: string) :ContractCallMethod; - baseURI() :ContractCallMethod; - claimGovernor() :ContractSendMethod; - getApproved(tokenId: number) :ContractCallMethod; - isApprovedForAll(owner: string, operator: string) :ContractCallMethod; - name() :ContractCallMethod; - ownerOf(tokenId: number) :ContractCallMethod; - proposeGovernor(proposedGovernor: string) :ContractSendMethod; - safeTransferFrom(from: string, to: string, tokenId: number, _data?: string) :ContractSendMethod; - setApprovalForAll(operator: string, approved: boolean) :ContractSendMethod; - supportsInterface(interfaceId: string) :ContractCallMethod; - symbol() :ContractCallMethod; - tokenByIndex(index: number) :ContractCallMethod; - tokenOfOwnerByIndex(owner: string, index: number) :ContractCallMethod; - tokenURI(tokenId: number) :ContractCallMethod; - totalSupply() :ContractCallMethod; - transferFrom(from: string, to: string, tokenId: number) :ContractSendMethod; - awardBounty(to: string, uri: string, bountyId: number, percentage: number) :ContractSendMethod; - getBountyToken(id: number) :ContractCallMethod<{'bountyConnector': {'bountyId': number;'percentage': number;};}>; - dispatcher(): ContractCallMethod; - setDispatcher(dispatcher: string): ContractSendMethod; -} diff --git a/src/interfaces/methods/cerc20.ts b/src/interfaces/methods/cerc20.ts deleted file mode 100644 index e8043c69..00000000 --- a/src/interfaces/methods/cerc20.ts +++ /dev/null @@ -1,22 +0,0 @@ -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface CERC20Methods { - allowance(owner: string, spender: string) :ContractCallMethod; - approve(spender: string, value: string | number) :ContractCallMethod; - balanceOf(owner: string) :ContractCallMethod; - decimals() :ContractCallMethod; - decreaseAllowance(spender: string, subtractedValue: number) :ContractCallMethod; - increaseAllowance(spender: string, addedValue: number) :ContractCallMethod; - initialBlockNumber() :ContractCallMethod; - initialExchangeRate() :ContractCallMethod; - isCToken() :ContractCallMethod; - totalSupply() :ContractCallMethod; - transfer(to: string, value: number) :ContractCallMethod; - transferFrom(from: string, to: string, value: number) :ContractCallMethod; - underlying() :ContractCallMethod; - balanceOfUnderlying(owner: string) :ContractCallMethod; - exchangeRateCurrent() :ContractCallMethod; - mint(mintAmount: number) :ContractCallMethod; - supplyUnderlying(supplyAmount: number) :ContractCallMethod; - redeemUnderlying(redeemAmount: number) :ContractCallMethod; -} diff --git a/src/interfaces/methods/contract-call-method.ts b/src/interfaces/methods/contract-call-method.ts deleted file mode 100644 index 7f3c541e..00000000 --- a/src/interfaces/methods/contract-call-method.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {CallOptions, ContractSendMethod} from 'web3-eth-contract'; - -export type Call = (options?: CallOptions, callback?: (err: Error, result: any) => void) => Promise; -export type ContractCallMethod = {call: Call} & ContractSendMethod; - diff --git a/src/interfaces/methods/erc1155-ownable.ts b/src/interfaces/methods/erc1155-ownable.ts deleted file mode 100644 index bd11cfee..00000000 --- a/src/interfaces/methods/erc1155-ownable.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { ContractSendMethod } from 'web3-eth-contract'; -import { ContractCallMethod } from '@methods/contract-call-method'; - -export interface ERC1155OwnableMethods { - balanceOf(account: string, id: number): ContractCallMethod; - balanceOfBatch( - accounts: string[], - ids: number[] - ): ContractCallMethod; - isApprovedForAll( - account: string, - operator: string - ): ContractCallMethod; - owner(): ContractCallMethod; - safeBatchTransferFrom( - from: string, - to: string, - ids: number[], - amounts: number[], - data: string - ): ContractSendMethod; - safeTransferFrom( - from: string, - to: string, - id: number, - amount: number, - data: string - ): ContractSendMethod; - setApprovalForAll(operator: string, approved: boolean): ContractSendMethod; - supportsInterface(interfaceId: string): ContractCallMethod; - transferOwnership(newOwner: string): ContractSendMethod; - uri(v1: number): ContractCallMethod; - setURI(uri: string): ContractSendMethod; - mint( - to: string, - tokenId: number, - amount: number, - data: string - ): ContractSendMethod; - mintBatch( - to: string, - tokenIds: number[], - amounts: number[], - data: string - ): ContractSendMethod; -} diff --git a/src/interfaces/methods/erc1155-standard.ts b/src/interfaces/methods/erc1155-standard.ts deleted file mode 100644 index 78ad2c5c..00000000 --- a/src/interfaces/methods/erc1155-standard.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ERC1155StandardMethods { - balanceOf(account: string, id: number): ContractCallMethod; - balanceOfBatch(accounts: string[], ids: number[]): ContractCallMethod; - isApprovedForAll(account: string, operator: string): ContractCallMethod; - safeBatchTransferFrom(from: string, to: string, ids: number[], amounts: number[], data: string): ContractSendMethod; - safeTransferFrom(from: string, to: string, id: number, amount: number, data: string): ContractSendMethod; - setApprovalForAll(operator: string, approved: boolean): ContractSendMethod; - supportsInterface(interfaceId: string): ContractCallMethod; - uri(v1: number): ContractCallMethod; - setURI(uri: string): ContractSendMethod; - mint(to: string, tokenId: number, amount: number, data: string): ContractSendMethod; - mintBatch(to: string, tokenIds: number[], amounts: number[], data: string): ContractSendMethod; -} \ No newline at end of file diff --git a/src/interfaces/methods/erc20-distribution.ts b/src/interfaces/methods/erc20-distribution.ts deleted file mode 100644 index 279eec85..00000000 --- a/src/interfaces/methods/erc20-distribution.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ERC20DistributionMethods { - TGEDate() :ContractCallMethod; - decimals() :ContractCallMethod; - distributions(v1: string, v2: number) :ContractCallMethod<{'0': number; '1': number; '2': number; '3': number}>; - erc20() :ContractCallMethod; - lastDateDistribution() :ContractCallMethod; - month() :ContractCallMethod; - owner() :ContractCallMethod; - paused() :ContractCallMethod; - tokenOwners(v1: number) :ContractCallMethod; - transferOwnership(newOwner: string) :ContractSendMethod; - year() :ContractCallMethod; - setTokenAddress(_tokenAddress: string) :ContractSendMethod; - safeGuardAllTokens(_address: string) :ContractSendMethod; - setTGEDate(_time: number) :ContractSendMethod; - triggerTokenSend() :ContractSendMethod; - setInitialDistribution(_address: string, _tokenAmount: string | number, _unlockDays: number) :ContractSendMethod; -} \ No newline at end of file diff --git a/src/interfaces/methods/erc20-token-lock.ts b/src/interfaces/methods/erc20-token-lock.ts deleted file mode 100644 index 9a300c95..00000000 --- a/src/interfaces/methods/erc20-token-lock.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ERC20TokenLockMethods { - erc20(): ContractCallMethod; - lockedTokensMap(v1: string): ContractCallMethod<{'0': number; '1': number; '2': number}>; - maxAmountToLock(): ContractCallMethod; - minAmountToLock(): ContractCallMethod; - owner(): ContractCallMethod; - paused(): ContractCallMethod; - totalAmountStaked(): ContractCallMethod; - transferOwnership(newOwner: string): ContractSendMethod; - admin(): ContractCallMethod; - setMaxAmountToLock(tokenAmount: string | number): ContractCallMethod; - setMinAmountToLock(tokenAmount: string | number): ContractCallMethod; - lock(amount: string | number, endDate: number): ContractCallMethod; - release(): ContractCallMethod; - canRelease(user: string): ContractCallMethod; - getLockedTokens(user: string): ContractCallMethod; - getLockedTokensInfo(user: string): ContractCallMethod<{'0': number; '1': number; '2': number}>; -} diff --git a/src/interfaces/methods/erc20.ts b/src/interfaces/methods/erc20.ts deleted file mode 100644 index 46636704..00000000 --- a/src/interfaces/methods/erc20.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ERC20Methods { - allowance(owner: string, spender: string): ContractCallMethod; - approve(spender: string, amount: string | number): ContractCallMethod; - balanceOf(account: string): ContractCallMethod; - decimals(): ContractCallMethod; - decreaseAllowance(spender: string, subtractedValue: number): ContractCallMethod; - distributionContract(): ContractCallMethod; - increaseAllowance(spender: string, addedValue: string | number): ContractCallMethod; - name(): ContractCallMethod; - owner(): ContractCallMethod; - symbol(): ContractCallMethod; - totalSupply(): ContractCallMethod; - transfer(recipient: string, amount: string | number): ContractCallMethod; - transferFrom(sender: string, recipient: string, amount: string | number): ContractCallMethod; - transferOwnership(newOwner: string): ContractSendMethod; - mint(receiver: string, amount: string): ContractSendMethod; -} diff --git a/src/interfaces/methods/erc4626.ts b/src/interfaces/methods/erc4626.ts deleted file mode 100644 index f73effe7..00000000 --- a/src/interfaces/methods/erc4626.ts +++ /dev/null @@ -1,61 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ERC4626Methods { - - - allowance(owner: string, spender: string): ContractCallMethod; - - approve(spender: string, amount: string): ContractSendMethod; - - balanceOf(account: string): ContractCallMethod; - - decreaseAllowance(spender: string, subtractedValue: string): ContractSendMethod; - - increaseAllowance(spender: string, addedValue: string): ContractSendMethod; - - name(): ContractCallMethod; - - symbol(): ContractCallMethod; - - totalSupply(): ContractCallMethod; - - transfer(recipient: string, amount: string): ContractSendMethod; - - transferFrom(sender: string, recipient: string, amount: string): ContractSendMethod; - - decimals(): ContractCallMethod; - - asset(): ContractCallMethod; - - totalAssets(): ContractCallMethod; - - convertToShares(assets: string): ContractCallMethod; - - convertToAssets(shares: string): ContractCallMethod; - - maxDeposit(arg1: string): ContractCallMethod; - - maxMint(arg1: string): ContractCallMethod; - - maxWithdraw(owner: string): ContractCallMethod; - - maxRedeem(owner: string): ContractCallMethod; - - previewDeposit(assets: string): ContractCallMethod; - - previewMint(shares: string): ContractCallMethod; - - previewRedeem(shares: string): ContractCallMethod; - - previewWithdraw(assets: string): ContractCallMethod; - - deposit(assets: string, receiver: string): ContractSendMethod; - - mint(shares: string, receiver: string): ContractSendMethod; - - withdraw(assets: string, receiver: string, owner: string): ContractSendMethod; - - redeem(shares: string, receiver: string, owner: string): ContractSendMethod; - -} \ No newline at end of file diff --git a/src/interfaces/methods/erc721-collectibles.ts b/src/interfaces/methods/erc721-collectibles.ts deleted file mode 100644 index b464ee63..00000000 --- a/src/interfaces/methods/erc721-collectibles.ts +++ /dev/null @@ -1,54 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ERC721CollectiblesMethods { - MAX_PURCHASE() :ContractCallMethod; - _baseFeeAddress() :ContractCallMethod; - _baseFeeShare() :ContractCallMethod; - _closed() :ContractCallMethod; - _currentTokenId() :ContractCallMethod; - _feeAddress() :ContractCallMethod; - _feeShare() :ContractCallMethod; - _isLimited() :ContractCallMethod; - _limitedAmount() :ContractCallMethod; - _openedPacks() :ContractCallMethod; - _otherAddress() :ContractCallMethod; - _otherShare() :ContractCallMethod; - _pricePerPack() :ContractCallMethod; - _purchaseToken() :ContractCallMethod; - alreadyMinted(v1: number) :ContractCallMethod; - approve(to: string, tokenId: number) :ContractSendMethod; - balanceOf(owner: string) :ContractCallMethod; - baseURI() :ContractCallMethod; - getApproved(tokenId: number) :ContractCallMethod; - isApprovedForAll(owner: string, operator: string) :ContractCallMethod; - lock() :ContractSendMethod; - name() :ContractCallMethod; - owner() :ContractCallMethod; - ownerOf(tokenId: number) :ContractCallMethod; - registeredIDs(v1: string, v2: number) :ContractCallMethod; - registeredIDsArray(v1: string, v2: number) :ContractCallMethod; - safeTransferFrom(from: string, to: string, tokenId: number) :ContractSendMethod; - safeTransferFrom(from: string, to: string, tokenId: number, _data?: string) :ContractSendMethod; - setApprovalForAll(operator: string, approved: boolean) :ContractSendMethod; - setFeeAddress(feeAddress: string) :ContractSendMethod; - setOtherAddress(otherAddress: string) :ContractSendMethod; - setPricePerPack(newPrice: string | number) :ContractSendMethod; - setPurchaseTokenAddress(purchaseToken: string) :ContractSendMethod; - setShares(feeShare: number, otherShare: number) :ContractSendMethod; - supportsInterface(interfaceId: string) :ContractCallMethod; - symbol() :ContractCallMethod; - tokenByIndex(index: number) :ContractCallMethod; - tokenOfOwnerByIndex(owner: string, index: number) :ContractCallMethod; - tokenURI(tokenId: number) :ContractCallMethod; - totalSupply() :ContractCallMethod; - transferFrom(from: string, to: string, tokenId: number) :ContractSendMethod; - transferOwnership(newOwner: string) :ContractSendMethod; - unlock() :ContractSendMethod; - exists(tokenId: number) :ContractCallMethod; - setTokenURI(tokenId: number, uri: string) :ContractSendMethod; - setBaseURI(baseURI: string) :ContractSendMethod; - mint(tokenIdToMint: number) :ContractSendMethod; - openPack(amount: number) :ContractSendMethod; - getRegisteredIDs(_address: string) :ContractCallMethod; -} diff --git a/src/interfaces/methods/erc721-standard.ts b/src/interfaces/methods/erc721-standard.ts deleted file mode 100644 index 83c3791a..00000000 --- a/src/interfaces/methods/erc721-standard.ts +++ /dev/null @@ -1,29 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ERC721StandardMethods { - approve(to: string, tokenId: number): ContractSendMethod; - balanceOf(owner: string): ContractCallMethod; - baseURI(): ContractCallMethod; - getApproved(tokenId: number): ContractCallMethod; - isApprovedForAll(owner: string, operator: string): ContractCallMethod; - name(): ContractCallMethod; - owner(): ContractCallMethod; - ownerOf(tokenId: number): ContractCallMethod; - safeTransferFrom(from: string, to: string, tokenId: number): ContractSendMethod; - safeTransferFrom(from: string, to: string, tokenId: number, _data?: string): ContractSendMethod; - setApprovalForAll(operator: string, approved: boolean): ContractSendMethod; - supportsInterface(interfaceId?: string): ContractCallMethod; - symbol(): ContractCallMethod; - tokenByIndex(index: number): ContractCallMethod; - tokenOfOwnerByIndex(owner: string, index: number): ContractCallMethod; - tokenURI(tokenId: number): ContractCallMethod; - totalSupply(): ContractCallMethod; - transferFrom(from: string, to: string, tokenId: number): ContractSendMethod; - transferOwnership(newOwner: string): ContractSendMethod; - exists(tokenId: number): ContractCallMethod; - setTokenURI(tokenId: number, uri: string): ContractSendMethod; - setBaseURI(baseURI: string): ContractSendMethod; - mint(to: string, tokenId: number): ContractSendMethod; - mint(to: string, tokenId: number, _data?: string): ContractSendMethod; -} diff --git a/src/interfaces/methods/eth-utils.ts b/src/interfaces/methods/eth-utils.ts deleted file mode 100644 index 3e88575c..00000000 --- a/src/interfaces/methods/eth-utils.ts +++ /dev/null @@ -1,10 +0,0 @@ -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface ETHUtilsMethods { - name(tokenAddress: string) :ContractCallMethod; - symbol(tokenAddress: string) :ContractCallMethod; - decimals(tokenAddress: string) :ContractCallMethod; - blockNumber() :ContractCallMethod; - blockTimestamp() :ContractCallMethod; - blockNumberAndTimestamp() :ContractCallMethod<{'0': number; '1': number}>; -} diff --git a/src/interfaces/methods/governed.ts b/src/interfaces/methods/governed.ts deleted file mode 100644 index 458d7b9f..00000000 --- a/src/interfaces/methods/governed.ts +++ /dev/null @@ -1,9 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface GovernedMethods { - _governor() :ContractCallMethod; - _proposedGovernor() :ContractCallMethod; - proposeGovernor(proposedGovernor: string) :ContractSendMethod; - claimGovernor() :ContractSendMethod; -} \ No newline at end of file diff --git a/src/interfaces/methods/locked-tokens-info.ts b/src/interfaces/methods/locked-tokens-info.ts deleted file mode 100644 index b5748363..00000000 --- a/src/interfaces/methods/locked-tokens-info.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface LockedTokensInfo { - startDate: number; - endDate: number; - amount: string | number; -} diff --git a/src/interfaces/methods/loophole.ts b/src/interfaces/methods/loophole.ts deleted file mode 100644 index e654844b..00000000 --- a/src/interfaces/methods/loophole.ts +++ /dev/null @@ -1,40 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; -/* eslint-disable */ -export interface LoopholeMethods { - LPtokensPerShareMultiplier() :ContractCallMethod; - exitPenalty() :ContractCallMethod; - exitPenaltyLP() :ContractCallMethod; - lpToken() :ContractCallMethod; - lpTokensPerBlock() :ContractCallMethod; - owner() :ContractCallMethod; - poolExists(v1: string) :ContractCallMethod; - startBlock() :ContractCallMethod; - swapRouter() :ContractCallMethod; - totalAllocPoint() :ContractCallMethod; - transferOwnership(newOwner: string) :ContractSendMethod; - uniswapPoolFee() :ContractCallMethod; - add(token: string, allocPoint: number) :ContractCallMethod; - set(pid: number, allocPoint: number, withUpdate: boolean) :ContractSendMethod; - stake(pid: number, amount: number) :ContractSendMethod; - exit(pid: number, amount?: number, amountOutMinimum?: number) :ContractCallMethod; - exit(amount: number) :ContractCallMethod; - getUserReward(pid: number, userAddress: string) :ContractCallMethod; - collectRewards(pid: number) :ContractCallMethod; - currentStake(pid: number, user: string) :ContractCallMethod; - earnings(pid: number, user: string) :ContractCallMethod; - getBlocksFromRange(from: number, to: number) :ContractCallMethod; - massUpdatePools() :ContractSendMethod; - updatePool(pid: number) :ContractCallMethod<{'0': number; '1': number; '2': number}>; - getPoolReward(pid: number) :ContractCallMethod; - getBlockTimestamp() :ContractCallMethod; - getBlockNumber() :ContractCallMethod; - getPool(pid: number):ContractCallMethod<{'0': string; '1': number; '2': number; '3': number; '4': number; '5': number; '6': number}>; - getPoolInfo(pid: number) :ContractCallMethod<{'0': string; '1': number; '2': number; '3': number; '4': number; '5': number; '6': number}>; - poolsCount() :ContractCallMethod; - getUserInfo(pid: number, user: string) :ContractCallMethod<{'0': number; '1': number; '2': number; '3': number}>; - getTotalEntryStakeUser(pid: number, user: string) :ContractCallMethod; - getTotalUnstakeUser(pid: number, user: string) :ContractCallMethod; - getEntryStakeAdjusted(pid: number, user: string) :ContractCallMethod; -} -/* eslint-enable */ diff --git a/src/interfaces/methods/network-factory-v2.ts b/src/interfaces/methods/network-factory-v2.ts deleted file mode 100644 index bddad1cb..00000000 --- a/src/interfaces/methods/network-factory-v2.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface NetworkFactoryV2Methods { - networksArray(index: number): ContractCallMethod; - erc20NetworkToken(): ContractCallMethod; - creatorAmount(): ContractCallMethod; - tokensLocked(): ContractCallMethod; - amountOfNetworks(): ContractCallMethod; - lockedTokensOfAddress(address: string): ContractCallMethod; - networkOfAddress(address: string): ContractCallMethod; - manageFunds(lock: boolean, tokenAmount: number): ContractSendMethod; - createNetwork(networkToken: string, nftToken: string, nftUri: string, treasuryAddress: string, cancelFee: number, closeFee: number): ContractSendMethod; -} diff --git a/src/interfaces/methods/network-factory.ts b/src/interfaces/methods/network-factory.ts deleted file mode 100644 index c2f34128..00000000 --- a/src/interfaces/methods/network-factory.ts +++ /dev/null @@ -1,19 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface NetworkFactoryMethods { - OPERATOR_AMOUNT(): ContractCallMethod; - beproAddress(): ContractCallMethod; - networks(v1: number): ContractCallMethod; - networksAmount(): ContractCallMethod; - networksArray(v1: number): ContractCallMethod; - networksByAddress(v1: string): ContractCallMethod; - tokensLocked(v1: string): ContractCallMethod; - tokensLockedTotal(): ContractCallMethod; - lock(_tokenAmount: string | number): ContractSendMethod; - createNetwork(_settlerToken: string, _transactionToken: string): ContractSendMethod; - unlock(): ContractSendMethod; - getTokensLocked(_address: string): ContractCallMethod; - getNetworkById(_id: number): ContractCallMethod; - getNetworkByAddress(_address: string): ContractCallMethod; -} diff --git a/src/interfaces/methods/network-registry.ts b/src/interfaces/methods/network-registry.ts deleted file mode 100644 index 48a62e72..00000000 --- a/src/interfaces/methods/network-registry.ts +++ /dev/null @@ -1,54 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface Network_RegistryMethods { - - - _governor(): ContractCallMethod; - - _proposedGovernor(): ContractCallMethod; - - claimGovernor(): ContractSendMethod; - - erc20(): ContractCallMethod; - bountyToken(): ContractCallMethod; - - lockAmountForNetworkCreation(): ContractCallMethod; - - lockedTokensOfAddress(v1: string): ContractCallMethod; - - networkOfAddress(v1: string): ContractCallMethod; - - networksArray(v1: number): ContractCallMethod; - - proposeGovernor(proposedGovernor: string): ContractSendMethod; - - totalLockedAmount(): ContractCallMethod; - - networkCreationFeePercentage(): ContractCallMethod; - - treasury(): ContractCallMethod; - - changeNetworkCreationFee(newAmount: number): ContractSendMethod; - - amountOfNetworks(): ContractCallMethod; - - lock(_amount: string | number): ContractSendMethod; - - unlock(): ContractSendMethod; - - registerNetwork(networkAddress: string): ContractSendMethod; - - changeAmountForNetworkCreation(newAmount: string | number): ContractSendMethod; - changeGlobalFees(closeFee: number, cancelFee: number): ContractSendMethod; - addAllowedTokens(tokens: string[], isTransactional: boolean): ContractSendMethod; - removeAllowedTokens(tokens: string[], isTransactional: boolean): ContractSendMethod; - - getAllowedToken(x: number, transactional: boolean): ContractCallMethod; - getAllowedTokenLen(transactional: boolean): ContractCallMethod; - - DIVISOR(): ContractCallMethod; - MAX_PERCENTAGE(): ContractCallMethod; - MAX_LOCK_PERCENTAGE_FEE(): ContractCallMethod; - -} \ No newline at end of file diff --git a/src/interfaces/methods/network-v2.ts b/src/interfaces/methods/network-v2.ts deleted file mode 100644 index dfbd47f1..00000000 --- a/src/interfaces/methods/network-v2.ts +++ /dev/null @@ -1,55 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface Network_v2Methods { - _governor(): ContractCallMethod; - _proposedGovernor(): ContractCallMethod; - bountiesIndex(): ContractCallMethod; - treasuryInfo(): ContractCallMethod<{'0': string, '1': number, '2': number}>; - DIVISOR(): ContractCallMethod; - MAX_PERCENTAGE(): ContractCallMethod; - canceledBounties(): ContractCallMethod; - cidBountyId(v1: string): ContractCallMethod; - claimGovernor(): ContractSendMethod; - closedBounties(): ContractCallMethod; - councilAmount(): ContractCallMethod; - disputableTime(): ContractCallMethod; - draftTime(): ContractCallMethod; - mergeCreatorFeeShare(): ContractCallMethod; - nftToken(): ContractCallMethod; - oracleExchangeRate(): ContractCallMethod; - oracles(v1: string): ContractCallMethod<{locked: number; toOthers: number; byOthers: number;}>; - oraclesDistributed(): ContractCallMethod; - percentageNeededForDispute(): ContractCallMethod; - proposeGovernor(proposedGovernor: string): ContractSendMethod; - proposerFeeShare(): ContractCallMethod; - networkToken(): ContractCallMethod; - totalNetworkToken(): ContractCallMethod; - getBounty(id: number): ContractCallMethod<{id: number; creationDate: number; tokenAmount: number; creator: string; transactional: string; rewardToken: string; rewardAmount: number; fundingAmount: number; closed: boolean; canceled: boolean; funded: boolean; title: string; repoPath: string; branch: string; cid: string; githubUser: string; closedDate: number; pullRequests: { originRepo: string; originCID: string; originBranch: string; userRepo: string; userBranch: string; ready: boolean; canceled: boolean; creator: string; cid: number; id: number; }[]; proposals: { id: number; creationDate: number; oracles: number; disputeWeight: number; prId: number; refusedByBountyOwner: boolean; creator: string; details: { recipient: string; percentage: number; }[] }[]; funding: { benefactor: string;amount: number;creationDate: number; }[];}>; - disputes(address: string, bountyAndProposalIds: string): ContractCallMethod; - disputes(address: string, bountyId: string | number, proposalId: string | number): ContractCallMethod; - getDelegationsFor(_address: string): ContractCallMethod<{id: number; from: string; to: string; amount: number;}[]>; - getBountiesOfAddress(owner: string): ContractCallMethod; - changeNetworkParameter(_parameter: number, _value: string | number): ContractSendMethod; - updateTresuryAddress(_address: string): ContractSendMethod; - manageOracles(lock: boolean, amount: string | number): ContractSendMethod; - delegateOracles(amount: string | number, toAddress: string): ContractSendMethod; - takeBackOracles(entryId: number): ContractSendMethod; - openBounty(tokenAmount: string | number, transactional: string, rewardToken: string, rewardAmount: string | number, fundingAmount: string | number, cid: string, title: string, repoPath: string, branch: string, githubUser: string): ContractSendMethod; - cancelBounty(id: number): ContractSendMethod; - cancelFundRequest(id: number): ContractSendMethod; - updateBountyAmount(id: number, newTokenAmount: string | number): ContractSendMethod; - fundBounty(id: number, fundingAmount: string | number): ContractSendMethod; - retractFunds(id: number, fundingId: number): ContractSendMethod; - createPullRequest(forBountyId: number, originRepo: string, originBranch: string, originCID: string, userRepo: string, userBranch: string, cid: number): ContractSendMethod; - cancelPullRequest(ofBounty: number, prId: number): ContractSendMethod; - markPullRequestReadyForReview(bountyId: number, pullRequestId: number): ContractSendMethod; - createBountyProposal(id: number, prId: number, recipients: string[], percentages: number[]): ContractSendMethod; - disputeBountyProposal(bountyId: number, proposalId: number): ContractSendMethod; - refuseBountyProposal(bountyId: number, proposalId: number): ContractSendMethod; - closeBounty(id: number, proposalId: number, ipfsUri: string): ContractSendMethod; - withdrawFundingReward(id: number, fundingId: number): ContractSendMethod; - hardCancel(id: number): ContractSendMethod; - cancelableTime(): ContractCallMethod; - registry(): ContractCallMethod; -} \ No newline at end of file diff --git a/src/interfaces/methods/network.ts b/src/interfaces/methods/network.ts deleted file mode 100644 index 407c5fa1..00000000 --- a/src/interfaces/methods/network.ts +++ /dev/null @@ -1,51 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface NetworkMethods { - COUNCIL_AMOUNT(): ContractCallMethod; - _governor(): ContractCallMethod; - _proposedGovernor(): ContractCallMethod; - claimGovernor(): ContractSendMethod; - closedIdsCount(): ContractCallMethod; - disputableTime(): ContractCallMethod; - disputesForMergeByAddress(issueId: number, proposalId: number, address: string): ContractCallMethod; - incrementIssueID(): ContractCallMethod; - issues(v1: number): ContractCallMethod<{'0': number; '1': string; '2': number; '3': number; '4': string; '5': number; '6': boolean; '7': boolean; '8': boolean}>; - issuesCIDtoID(v1: string): ContractCallMethod; - mergeCreatorFeeShare(): ContractCallMethod; - myIssues(v1: string, v2: number): ContractCallMethod; - oraclers(v1: string): ContractCallMethod<{'0': number; '1': number}>; - oraclersArray(v1: number): ContractCallMethod; - oraclesStaked(): ContractCallMethod; - paused(): ContractCallMethod; - percentageNeededForDispute(): ContractCallMethod; - proposeGovernor(proposedGovernor: string): ContractSendMethod; - redeemTime(): ContractCallMethod; - settlerToken(): ContractCallMethod; - totalStaked(): ContractCallMethod; - transactionToken(): ContractCallMethod; - lock(_tokenAmount: string | number): ContractSendMethod; - unlock(_tokenAmount: string | number, _from: string): ContractSendMethod; - delegateOracles(_tokenAmount: string | number, _delegatedTo: string): ContractSendMethod; - disputeMerge(_issueID: number, _mergeID: number): ContractSendMethod; - isIssueInDraft(_issueID: number): ContractCallMethod; - isMergeInDraft(_issueID: number, _mergeID: number): ContractCallMethod; - isMergeDisputed(_issueID: number, _mergeID: number): ContractCallMethod; - openIssue(_cid: string, _tokenAmount: string | number): ContractSendMethod; - recognizeAsFinished(_issueId: number): ContractSendMethod; - redeemIssue(_issueId: number): ContractSendMethod; - updateIssue(_issueId: number, _newTokenAmount: string | number): ContractSendMethod; - proposeIssueMerge(_issueID: number, _prAddresses: string[], _prAmounts: string[] | number[]): ContractSendMethod; - closeIssue(_issueID: number, _mergeID: number): ContractSendMethod; - getIssuesByAddress(_address: string): ContractCallMethod; - getOraclesByAddress(_address: string): ContractCallMethod; - getOraclesSummary(_address: string): ContractCallMethod<{'0': number; '1': number[]; '2': string[]; '3': number}>; - getIssueByCID(_issueCID: string): ContractCallMethod<{'0': number; '1': string; '2': number; '3': number; '4': string; '5': number; '6': boolean; '7': boolean; '8': boolean}>; - getIssueById(_issueID: number): ContractCallMethod<{'0': number; '1': string; '2': number; '3': number; '4': string; '5': number; '6': boolean; '7': boolean; '8': boolean}>; - getMergeById(_issueID: number, _mergeId: number): ContractCallMethod<{'0': number; '1': number; '2': number; '3': string[]; '4': number[]; '5': string}>; - changeMergeCreatorFeeShare(_mergeCreatorFeeShare: number): ContractSendMethod; - changePercentageNeededForDispute(_percentageNeededForDispute: number): ContractSendMethod; - changeDisputableTime(_disputableTime: number): ContractSendMethod; - changeRedeemTime(_redeemTime: number): ContractSendMethod; - changeCOUNCIL_AMOUNT(_COUNCIL_AMOUNT: string | number): ContractSendMethod; -} diff --git a/src/interfaces/methods/ownable.ts b/src/interfaces/methods/ownable.ts deleted file mode 100644 index 7e7771ff..00000000 --- a/src/interfaces/methods/ownable.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface OwnableMethods { - owner(): ContractCallMethod; - transferOwnership(newOwner: string): ContractSendMethod; -} diff --git a/src/interfaces/methods/pausable.ts b/src/interfaces/methods/pausable.ts deleted file mode 100644 index 851444e7..00000000 --- a/src/interfaces/methods/pausable.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface PausableMethods { - paused(): ContractCallMethod; -} diff --git a/src/interfaces/methods/real-fevr-marketplace.ts b/src/interfaces/methods/real-fevr-marketplace.ts deleted file mode 100644 index 730d58d2..00000000 --- a/src/interfaces/methods/real-fevr-marketplace.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface RealFevrMarketplaceMethods { - erc20Address() :ContractCallMethod; - erc721Address() :ContractCallMethod; - feeAddress() :ContractCallMethod; - saleIncrementId() :ContractCallMethod; - approveERC721use(operator: string) :ContractSendMethod; - approveERC721use(operator: string, approved?: boolean) :ContractSendMethod; - buyERC721(tokenId: number) :ContractSendMethod; - buyERC721(tokenId: number, value?: number) :ContractSendMethod; - changeERC20(erc20TokenAddress: string) :ContractSendMethod; - changeERC721(erc721TokenAddress: string) :ContractSendMethod; - getAmountofNFTsEverInSale() :number; - getERC20TokenAddress() :ContractCallMethod; - getERC721TokenAddress() :ContractCallMethod; - getFeeAddress() :ContractCallMethod; - isETHTransaction() :string; - putERC721OnSale(tokenId: number, price: string | number) :ContractSendMethod; - removeERC721FromSale(tokenId: number) :ContractSendMethod; - setFixedFees(feeAddress: string, feePercentage: number) :ContractSendMethod; -} diff --git a/src/interfaces/methods/real-fevr-opener.ts b/src/interfaces/methods/real-fevr-opener.ts deleted file mode 100644 index 64bcfacc..00000000 --- a/src/interfaces/methods/real-fevr-opener.ts +++ /dev/null @@ -1,56 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface RealFevrOpenerMethods { - _closed() :ContractCallMethod; - _openedPacks() :ContractCallMethod; - _purchaseToken() :ContractCallMethod; - _realFvrTokenPriceUSD() :ContractCallMethod; - alreadyMinted(v1: number) :ContractCallMethod; - approve(to: string, tokenId: number) :ContractSendMethod; - balanceOf(owner: string) :ContractCallMethod; - baseURI() :ContractCallMethod; - getApproved(tokenId: number) :ContractCallMethod; - isApprovedForAll(owner: string, operator: string) :ContractCallMethod; - lastNFTID() :ContractCallMethod; - name() :ContractCallMethod; - owner() :ContractCallMethod; - ownerOf(tokenId: number) :ContractCallMethod; - packIncrementId() :ContractCallMethod; - packs(v1: number) :ContractCallMethod<{'0': number; '1': number; '2': number; '3': number; '4': number; '5': number; '6': string; '7': string; '8': string; '9': string}>; - registeredIDs(v1: string, v2: number) :ContractCallMethod; - registeredIDsArray(v1: string, v2: number) :ContractCallMethod; - safeTransferFrom(from: string, to: string, tokenId: number) :ContractSendMethod; - safeTransferFrom(from: string, to: string, tokenId: number, _data?: string) :ContractSendMethod; - setApprovalForAll(operator: string, approved: boolean) :ContractSendMethod; - supportsInterface(interfaceId: string) :ContractCallMethod; - symbol() :ContractCallMethod; - tokenByIndex(index: number) :ContractCallMethod; - tokenOfOwnerByIndex(owner: string, index: number) :ContractCallMethod; - tokenURI(tokenId: number) :ContractCallMethod; - totalSupply() :ContractCallMethod; - transferFrom(from: string, to: string, tokenId: number) :ContractSendMethod; - transferOwnership(newOwner: string) :ContractSendMethod; - setTokenURI(tokenId: number, uri: string) :ContractSendMethod; - setBaseURI(baseURI: string) :ContractSendMethod; - exists(tokenId: number) :ContractCallMethod; - getRegisteredIDs(_address: string) :ContractCallMethod; - getMarketplaceDistributionForERC721(tokenId: number) :any; - getPurchaseToken() :ContractCallMethod; - getTokenWorthof1USD() :number; - getPackbyId(_packId: number) :ContractCallMethod<{'0': number; '1': number; '2': number; '3': string; '4': string; '5': string; '6': string; '7': string[]; '8': number[]; '9': boolean}>; - getPackPriceInFVR(packId: number) :ContractCallMethod; - buyPack(packId: number) :ContractSendMethod; - buyPacks(packIds: number[]) :ContractSendMethod; - openPack(packId: number) :ContractSendMethod; - openPacks(packIds: number[]) :ContractSendMethod; - createPack(nftAmount: number, price: string | number, serie: string, packType: string, drop: string, saleStart: number, saleDistributionAddresses: string[], saleDistributionAmounts: number[], marketplaceDistributionAddresses: string[], marketplaceDistributionAmounts: number[]) :ContractSendMethod; - offerPack(packId: number, receivingAddress: string) :ContractSendMethod; - editPackInfo(_packId: number, _saleStart: number, serie: string, packType: string, drop: string, price: string | number) :ContractSendMethod; - deletePackById(packId: number) :ContractSendMethod; - mint(tokenIdToMint: number) :ContractSendMethod; - setPurchaseTokenAddress(purchaseToken: string) :ContractSendMethod; - setTokenPriceInUSD(newPrice: number) :ContractSendMethod; - lock() :ContractSendMethod; - unlock() :ContractSendMethod; -} diff --git a/src/interfaces/methods/sablier.ts b/src/interfaces/methods/sablier.ts deleted file mode 100644 index d7b4a224..00000000 --- a/src/interfaces/methods/sablier.ts +++ /dev/null @@ -1,30 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface SablierMethods { - addPauser(account: string) :ContractSendMethod; - fee() :ContractCallMethod; - initialize(sender: string) :ContractSendMethod; - isPauser(account: string) :ContractCallMethod; - nextStreamId() :ContractCallMethod; - owner() :ContractCallMethod; - pause() :ContractSendMethod; - paused() :ContractCallMethod; - transferOwnership(newOwner: string) :ContractSendMethod; - unpause() :ContractSendMethod; - updateFee(feePercentage: number) :ContractSendMethod; - takeEarnings(tokenAddress: string, amount: string | number) :ContractSendMethod; - getStream(streamId: number) :ContractCallMethod<{'0': string; '1': string; '2': number; '3': string; '4': number; '5': number; '6': number; '7': number}>; - deltaOf(streamId: number) :ContractCallMethod; - balanceOf(streamId: number, who: string) :ContractCallMethod; - isCompoundingStream(streamId: number) :ContractCallMethod; - getCompoundingStream(streamId: number) :ContractCallMethod<{'0': string; '1': string; '2': number; '3': string; '4': number; '5': number; '6': number; '7': number; '8': number; '9': number; '10': number}>; - interestOf(streamId: number, amount: number) :ContractCallMethod<{'0': number; '1': number; '2': number}>; - getEarnings(tokenAddress: string) :ContractCallMethod; - createStream(recipient: string, deposit: string | number, tokenAddress: string, startTime: number, stopTime: number) :ContractCallMethod; - createCompoundingStream(recipient: string, deposit: string | number, tokenAddress: string, startTime: number, stopTime: number, senderSharePercentage: number, recipientSharePercentage: number) :ContractCallMethod; - withdrawFromStream(streamId: number, amount: string | number) :ContractCallMethod; - cancelStream(streamId: number) :ContractCallMethod; - getTokenDecimalsFromStream(streamId: number) :ContractCallMethod; - getTokenDecimals(tokenAddress: string) :ContractCallMethod; -} \ No newline at end of file diff --git a/src/interfaces/methods/staking-contract.ts b/src/interfaces/methods/staking-contract.ts deleted file mode 100644 index f5a3738a..00000000 --- a/src/interfaces/methods/staking-contract.ts +++ /dev/null @@ -1,26 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface StakingContractMethods { - erc20() :ContractCallMethod; - erc721() :ContractCallMethod; - mySubscriptions(v1: string, v2: number) :ContractCallMethod; - owner() :ContractCallMethod; - paused() :ContractCallMethod; - productIds(v1: number) :ContractCallMethod; - products(v1: number) :ContractCallMethod<{'0': number; '1': number; '2': number; '3': number; '4': number; '5': number; '6': number; '7': number; '8': boolean}>; - transferOwnership(newOwner: string) :ContractSendMethod; - heldTokens() :ContractCallMethod; - futureLockedTokens() :ContractCallMethod; - availableTokens() :ContractCallMethod; - subscribeProduct(_product_id: number, _amount: string | number) :ContractSendMethod; - createProduct(_startDate: number, _endDate: number, _totalMaxAmount: string | number, _individualMinimumAmount: string | number, _individualMaximumAmount: string | number, _APR: number, _lockedUntilFinalization: boolean) :ContractSendMethod; - getAPRAmount(_APR: number, _startDate: number, _endDate: number, _amount: string | number) :ContractCallMethod; - getProductIds() :ContractCallMethod; - getMySubscriptions(_address: string) :ContractCallMethod; - withdrawSubscription(_product_id: number, _subscription_id: number) :ContractSendMethod; - getSubscription(_subscription_id: number, _product_id: number) :ContractCallMethod<{'0': number; '1': number; '2': number; '3': number; '4': number; '5': string; '6': number; '7': boolean; '8': number}>; - getProduct(_product_id: number) :ContractCallMethod<{'0': number; '1': number; '2': number; '3': number; '4': number; '5': number; '6': number; '7': number; '8': boolean; '9': string[]; '10': number[]}>; - safeGuardAllTokens(_address: string) :ContractSendMethod; - changeTokenAddress(_tokenAddress: string) :ContractSendMethod; -} diff --git a/src/interfaces/methods/swap-router.ts b/src/interfaces/methods/swap-router.ts deleted file mode 100644 index d8a0086e..00000000 --- a/src/interfaces/methods/swap-router.ts +++ /dev/null @@ -1,10 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface SwapRouterMethods { - uniswapV3SwapCallback(amount0Delta: number, amount1Delta: number, data: string) :ContractSendMethod; - exactInputSingle(params: {'tokenIn': string; 'tokenOut': string; 'fee': number; 'recipient': string; 'deadline': number; 'amountIn': number; 'amountOutMinimum': number; 'sqrtPriceLimitX96': number}) :ContractCallMethod; - exactInput(params: {'path': string; 'recipient': string; 'deadline': number; 'amountIn': number; 'amountOutMinimum': number}) :ContractCallMethod; - exactOutputSingle(params: {'tokenIn': string; 'tokenOut': string; 'fee': number; 'recipient': string; 'deadline': number; 'amountOut': number; 'amountInMaximum': number; 'sqrtPriceLimitX96': number}) :ContractCallMethod; - exactOutput(params: {'path': string; 'recipient': string; 'deadline': number; 'amountOut': number; 'amountInMaximum': number}) :ContractCallMethod; -} diff --git a/src/interfaces/methods/uniswap-v3-factory.ts b/src/interfaces/methods/uniswap-v3-factory.ts deleted file mode 100644 index 642edae0..00000000 --- a/src/interfaces/methods/uniswap-v3-factory.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface UniswapV3FactoryMethods { - owner() :ContractCallMethod; - feeAmountTickSpacing(fee: number) :ContractCallMethod; - getPool(tokenA: string, tokenB: string, fee: number) :ContractCallMethod; - createPool(tokenA: string, tokenB: string, fee: number) :ContractCallMethod; - setOwner(_owner: string) :ContractSendMethod; - enableFeeAmount(fee: number, tickSpacing: number) :ContractSendMethod; -} diff --git a/src/interfaces/methods/uniswap-v3-router-bridge.ts b/src/interfaces/methods/uniswap-v3-router-bridge.ts deleted file mode 100644 index 521f2f9e..00000000 --- a/src/interfaces/methods/uniswap-v3-router-bridge.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface UniswapV3RouterBridgeMethods { - swapRouter() :ContractCallMethod; - swapExactInputSingleEx(tokenIn: string, tokenOut: string, poolFee: undefined, amountIn: number, amountOutMinimum: number) :ContractCallMethod; - swapExactOutputSingleEx(tokenIn: string, tokenOut: string, poolFee: undefined, amountOut: number, amountInMaximum: number) :ContractCallMethod; -} diff --git a/src/interfaces/methods/votable.ts b/src/interfaces/methods/votable.ts deleted file mode 100644 index 6743552a..00000000 --- a/src/interfaces/methods/votable.ts +++ /dev/null @@ -1,22 +0,0 @@ -import {ContractSendMethod} from 'web3-eth-contract'; -import {ContractCallMethod} from '@methods/contract-call-method'; - -export interface VotableMethods { - bank(v1: string) :ContractCallMethod; - erc20() :ContractCallMethod; - pollCount() :ContractCallMethod; - polls(v1: number) :ContractCallMethod<{'0': string; '1': undefined; '2': number; '3': string; '4': number; '5': number}>; - createPoll(_description: string, _voteLength: number, options: number[]) :ContractCallMethod; - endPoll(_pollID: number) :ContractSendMethod; - getPoolInformation(_pollID: number) :ContractCallMethod<{'0': string; '1': undefined; '2': number; '3': string; '4': string[]; '5': number}>; - getPoolWinner(_pollID: number) :ContractCallMethod<{'0': number; '1': number}>; - getPollOptionById(_pollID: number, id: number) :ContractCallMethod; - getPollHistory(_voter: string) :ContractCallMethod; - getPollInfoForVoter(_pollID: number, _voter: string) :ContractCallMethod<{'0': number; '1': number}>; - userHasVoted(_pollID: number, _user: string) :ContractCallMethod; - castVote(_pollID: number, _voteId: number) :ContractSendMethod; - stakeVotingTokens(_numTokens: string | number) :ContractSendMethod; - withdrawTokens(_numTokens: string | number) :ContractSendMethod; - getLockedAmount(_voter: string) :ContractCallMethod; - getTokenStake(_voter: string) :ContractCallMethod; -} \ No newline at end of file diff --git a/src/interfaces/modifiers.ts b/src/interfaces/modifiers.ts index a74eee5d..08337cc5 100644 --- a/src/interfaces/modifiers.ts +++ b/src/interfaces/modifiers.ts @@ -1,15 +1,6 @@ -import {Pausable} from '@base/pausable'; import {Ownable} from '@base/ownable'; -import {ETHUtils} from '@models/eth-utils'; - -export abstract class IsPausable { - abstract readonly pausable: Pausable; -} export abstract class IsOwnable { abstract readonly ownable: Ownable; } -export abstract class HasEthUtils { - abstract readonly ethUtils: ETHUtils -} diff --git a/src/interfaces/real-fevr-marketplace-distributions.ts b/src/interfaces/real-fevr-marketplace-distributions.ts deleted file mode 100644 index 03b93e0f..00000000 --- a/src/interfaces/real-fevr-marketplace-distributions.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface RealFevrMarketplaceDistributions { - distributionAmounts: number[]; - distributionAddresses: string[]; -} diff --git a/src/interfaces/real-fevr-pack.ts b/src/interfaces/real-fevr-pack.ts deleted file mode 100644 index f30b8c4b..00000000 --- a/src/interfaces/real-fevr-pack.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface RealFevrPack { - packId: number; - initialNFTID: number; - price: string | number; - serie: string; - drop: string; - packType: string; - buyer: string; - saleDistributionAddresses: string[]; - saleDistributionAmounts: number[]; - opened: boolean -} diff --git a/src/interfaces/sablier-compound-stream.ts b/src/interfaces/sablier-compound-stream.ts deleted file mode 100644 index 696e70d8..00000000 --- a/src/interfaces/sablier-compound-stream.ts +++ /dev/null @@ -1,13 +0,0 @@ -export interface SablierCompoundingStream { - sender: string; - recipient: string; - tokenAddress: string; - deposit: string | number; - startTime: number; - stopTime: number; - remainingBalance: string | number; - ratePerSecond: string | number; - exchangeRateInitial: string | number; - senderSharePercentage: string | number; - recipientSharePercentage: string | number; -} diff --git a/src/interfaces/sablier-interest.ts b/src/interfaces/sablier-interest.ts deleted file mode 100644 index 014c9ead..00000000 --- a/src/interfaces/sablier-interest.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface SablierInterest { - spenderInterest: string | number; - recipientInterest: string | number; - sablierInterest: string | number; -} diff --git a/src/interfaces/sablier-stream.ts b/src/interfaces/sablier-stream.ts deleted file mode 100644 index 727379c4..00000000 --- a/src/interfaces/sablier-stream.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface SablierStream { - sender: string; - recipient: string; - deposit: string | number; - tokenAddress: string; - startTime: number; - stopTime: number; - remainingBalance: string | number; - ratePerSecond: string | number; -} diff --git a/src/interfaces/swap-router.ts b/src/interfaces/swap-router.ts deleted file mode 100644 index 1e36fd41..00000000 --- a/src/interfaces/swap-router.ts +++ /dev/null @@ -1,37 +0,0 @@ -export interface ExactInputSingleParams { - tokenIn: string; - tokenOut: string; - fee: number; - recipient: string; - deadline: number; - amountIn: number; - amountOutMinimum: number; - sqrtPriceLimitX96: number -} - -export interface ExactInputParams { - path: string; - recipient: string; - deadline: number; - amountIn: number; - amountOutMinimum: number -} - -export interface ExactOutputSingleParams { - tokenIn: string; - tokenOut: string; - fee: number; - recipient: string; - deadline: number; - amountOut: number; - amountInMaximum: number; - sqrtPriceLimitX96: number -} - -export interface ExactOutputParams { - path: string; - recipient: string; - deadline: number; - amountOut: number; - amountInMaximum: number -} diff --git a/src/interfaces/web3-connection-options.ts b/src/interfaces/web3-connection-options.ts index ce8b3b19..8de71198 100644 --- a/src/interfaces/web3-connection-options.ts +++ b/src/interfaces/web3-connection-options.ts @@ -1,6 +1,9 @@ -import {HttpProviderOptions, WebsocketProviderOptions} from 'web3-core-helpers'; -import {PromiEvent, provider as Provider, TransactionReceipt} from 'web3-core'; -import {Contract} from "web3-eth-contract"; +import {type Socket} from "net"; +import {type Web3PromiEvent} from "web3-core/lib/types/web3_promi_event"; +import {type Web3EventMap} from "web3-core/src/web3_event_emitter"; +import {type SupportedProviders} from "web3-types/src/web3_base_provider"; + + export interface Web3ConnectionOptions { @@ -13,18 +16,17 @@ export interface Web3ConnectionOptions { * Provide a privateKey to automatically use that account when started * If not provided, only read-mode will be possible */ - privateKey?: string; + privateKey?: string|Uint8Array; /** - * Pass options to provider - * @note you can provide a node server if you're using IPC + * Pass options a socket to the custom provider if needed */ - web3ProviderOptions?: HttpProviderOptions | WebsocketProviderOptions; - + net?: Socket, + /** * Pass a custom provider instead */ - web3CustomProvider?: Provider; + web3CustomProvider?: SupportedProviders; /** * Skip the assignment of `window.web3 = Web3` @@ -38,11 +40,14 @@ export interface Web3ConnectionOptions { */ debug?: boolean; - customTransactionHandler?: (event: PromiEvent, - resolve: (data: any) => void, - reject: (e: unknown) => void, - debug?: boolean) => void; + /* eslint-disable @typescript-eslint/no-unused-vars */ + // eslint-disable-next-line max-len + customTransactionHandler?: (event: Web3PromiEvent, + resolve: (data: never) => void, + reject: (e: unknown) => void, + debug?: boolean) => void; + /* eslint-enable @typescript-eslint/no-unused-vars */ /** * If true, web3Connection will call `.start()` on construction * @default true @@ -55,4 +60,10 @@ export interface Web3ConnectionOptions { * @default true */ restartModelOnDeploy?: boolean; + + /** + * Minimum confirmations needed to return a receipt + * @default 1 + */ + confirmations?: number; } diff --git a/src/models/network-registry.ts b/src/models/bepro/network-registry.ts similarity index 67% rename from src/models/network-registry.ts rename to src/models/bepro/network-registry.ts index c67ec264..3729366f 100644 --- a/src/models/network-registry.ts +++ b/src/models/bepro/network-registry.ts @@ -1,22 +1,18 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; -import { ERC20 } from '@models/erc20'; +import {ERC20} from '@models/token/ERC20/erc20'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import {XEvents, XPromiseEvent} from '@events/x-events'; - -import Network_RegistryJson from '@abi/NetworkRegistry.json'; -import { Network_RegistryMethods } from '@methods/network-registry'; -import * as Events from '@events/network-registry' -import {PastEventOptions} from 'web3-eth-contract'; -import {AbiItem} from 'web3-utils'; -import { fromSmartContractDecimals, toSmartContractDecimals } from '@utils/numbers'; + +import {fromSmartContractDecimals, toSmartContractDecimals} from '@utils/numbers'; import {nativeZeroAddress} from "@utils/constants"; import {Governed} from "@base/governed"; -import {allowedTokens as _allowedTokens} from "@utils/allowed-tokens"; -import {BountyToken} from "@models/bounty-token"; +import {BountyToken} from "@models/bepro/token/ERC721/bounty-token"; +import artifact from "@interfaces/generated/abi/NetworkRegistry"; +import {Filter} from "web3"; +import {ContractConstructorArgs} from "web3-types"; -export class Network_Registry extends Model implements Deployable { +export class Network_Registry extends Model implements Deployable { private _token!: ERC20; private _governed!: Governed; private _bountyToken!: BountyToken; @@ -28,7 +24,7 @@ export class Network_Registry extends Model implements get divisor() { return this._DIVISOR; } constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, Network_RegistryJson.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } async start() { @@ -45,7 +41,7 @@ export class Network_Registry extends Model implements this._token = new ERC20(this.connection, erc20Address); this._bountyToken = new BountyToken(this.connection, bountyTokenAddress); - this._governed = new Governed(this); + this._governed = new Governed(this.connection, this.contractAddress); this._DIVISOR = await this.getDivisor(); @@ -62,51 +58,52 @@ export class Network_Registry extends Model implements bountyToken = nativeZeroAddress) { const token = new ERC20(this.connection, _erc20); + await token.start(); await token.start(); const deployOptions = { - data: Network_RegistryJson.bytecode, + data: artifact.bytecode, arguments: [ _erc20, toSmartContractDecimals(_lockAmountForNetworkCreation, token.decimals), treasury, lockFeePercentage, closeFee, cancelFee, bountyToken, - ] + ] as ContractConstructorArgs } return this.deploy(deployOptions, this.connection.Account); } async erc20() { - return this.callTx(this.contract.methods.erc20()); + return this.contract.methods.erc20().call(); } async bountyTokenAddress() { - return this.callTx(this.contract.methods.bountyToken()); + return this.contract.methods.bountyToken().call() } async getDivisor() { - return this.callTx(this.contract.methods.DIVISOR()); + return Number(await this.callTx(this.contract.methods.DIVISOR())); } async getMAX_LOCK_PERCENTAGE_FEE() { - return this.callTx(this.contract.methods.MAX_LOCK_PERCENTAGE_FEE()); + return Number(await this.callTx(this.contract.methods.MAX_LOCK_PERCENTAGE_FEE())); } async lockAmountForNetworkCreation() { - return fromSmartContractDecimals(await this.callTx(this.contract.methods.lockAmountForNetworkCreation()), + return fromSmartContractDecimals(await this.callTx(this.contract.methods.lockAmountForNetworkCreation()), this.token.decimals); } async lockedTokensOfAddress(v1: string) { - return fromSmartContractDecimals(await this.callTx(this.contract.methods.lockedTokensOfAddress(v1)), + return fromSmartContractDecimals(await this.callTx(this.contract.methods.lockedTokensOfAddress(v1)), this.token.decimals); } async networkOfAddress(v1: string) { - return this.callTx(this.contract.methods.networkOfAddress(v1)); + return this.contract.methods.networkOfAddress(v1).call() } async networksArray(v1: number) { - return this.callTx(this.contract.methods.networksArray(v1)); + return this.contract.methods.networksArray(v1).call(); } async totalLockedAmount() { @@ -115,7 +112,7 @@ export class Network_Registry extends Model implements } async networkCreationFeePercentage() { - return +(await this.callTx(this.contract.methods.networkCreationFeePercentage())) / this.divisor; + return Number(await this.callTx(this.contract.methods.networkCreationFeePercentage())) / this.divisor; } async treasury() { @@ -130,7 +127,7 @@ export class Network_Registry extends Model implements return this.sendTx(this.contract.methods.lock(toSmartContractDecimals(_amount, this.token.decimals))); } - async unlock() { + async unlock() { return this.sendTx(this.contract.methods.unlock()); } @@ -161,9 +158,9 @@ export class Network_Registry extends Model implements async getAllowedTokenLen(): Promise { return Promise.all([ - this.callTx(this.contract.methods.getAllowedTokenLen(true)), - this.callTx(this.contract.methods.getAllowedTokenLen(false)), - ]) + this.callTx(this.contract.methods.getAllowedTokenLen(true)), + this.callTx(this.contract.methods.getAllowedTokenLen(false)), + ]).then(p => p.map(v => Number(v))); } async getAllowedTokens() { @@ -182,28 +179,28 @@ export class Network_Registry extends Model implements return {transactional, reward}; } - async getGovernorTransferredEvents(filter: PastEventOptions): Promise[]> { + async getGovernorTransferredEvents(filter: Filter) { return this.contract.self.getPastEvents('GovernorTransferred', filter); } - async getNetworkClosedEvents(filter: PastEventOptions): Promise[]> { + async getNetworkClosedEvents(filter: Filter) { return this.contract.self.getPastEvents('NetworkClosed', filter); } - async getNetworkRegisteredEvents(filter: PastEventOptions): Promise[]> { + async getNetworkRegisteredEvents(filter: Filter) { return this.contract.self.getPastEvents('NetworkRegistered', filter); } - async getUserLockedAmountChangedEvents(filter: PastEventOptions): XPromiseEvent { + async getUserLockedAmountChangedEvents(filter: Filter) { return this.contract.self.getPastEvents('UserLockedAmountChanged', filter); } - async getChangedFeeEvent(filter: PastEventOptions): XPromiseEvent { + async getChangedFeeEvent(filter: Filter) { return this.contract.self.getPastEvents('ChangedFee', filter); } - async getChangeAllowedTokensEvents(filter: PastEventOptions): XPromiseEvent { + async getChangeAllowedTokensEvents(filter: Filter) { return this.contract.self.getPastEvents('ChangeAllowedTokens', filter); } - async getLockFeeChangedEvents(filter: PastEventOptions): XPromiseEvent { + async getLockFeeChangedEvents(filter: Filter) { return this.contract.self.getPastEvents('LockFeeChanged', filter); } } diff --git a/src/models/network-v2.ts b/src/models/bepro/network-v2.ts similarity index 76% rename from src/models/network-v2.ts rename to src/models/bepro/network-v2.ts index 6bb45aa4..e0204f4b 100644 --- a/src/models/network-v2.ts +++ b/src/models/bepro/network-v2.ts @@ -2,30 +2,27 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import Network_v2Json from '@abi/NetworkV2.json'; -import {Network_v2Methods} from '@methods/network-v2'; -import * as Events from '@events/network-v2-events'; -import {XEvents, XPromiseEvent} from '@events/x-events'; -import {PastEventOptions} from 'web3-eth-contract'; -import {AbiItem} from 'web3-utils'; -import {BountyToken} from '@models/bounty-token'; -import {ERC20} from '@models/erc20'; +import {BountyToken} from '@models/bepro/token/ERC721/bounty-token'; +import {ERC20} from '@models/token/ERC20/erc20'; import {Governed} from '@base/governed'; import {fromSmartContractDecimals, toSmartContractDecimals} from '@utils/numbers'; import {nativeZeroAddress, Thousand} from '@utils/constants'; -import { OraclesResume } from '@interfaces/oracles-resume'; -import { Delegation } from '@interfaces/delegation'; -import { oraclesResume } from '@utils/oracles-resume'; -import { bounty } from '@utils/bounty'; -import { treasuryInfo } from '@utils/treasury-info'; -import {delegationEntry} from "@utils/delegation"; -import {NetworkRegistry} from "@models/network-registry"; +import {OraclesResume} from '@interfaces/bepro/oracles-resume'; +import {Delegation} from '@interfaces/bepro/delegation'; +import {oraclesResume} from '@utils/models/oracles-resume'; +import {bounty} from '@utils/models/bounty'; +import {treasuryInfo} from '@utils/models/treasury-info'; +import {delegationEntry} from "@utils/models/delegation"; +import {NetworkRegistry} from "@models/bepro/network-registry"; import BigNumber from "bignumber.js"; +import artifact from "@interfaces/generated/abi/NetworkV2"; +import {ContractConstructorArgs} from "web3-types"; +import {Filter} from "web3"; +import {Bounty} from "@interfaces/bepro/bounty"; -export class Network_v2 extends Model implements Deployable { +export class Network_v2 extends Model implements Deployable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - super(web3Connection, (Network_v2Json as any).abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } private _nftToken!: BountyToken; @@ -74,7 +71,7 @@ export class Network_v2 extends Model implements Deployable { const transactionalTokenAddress = await this.networkTokenAddress(); const registryAddress = await this.registryAddress(); - this._governed = new Governed(this); + this._governed = new Governed(this.connection, this.contractAddress); this._networkToken = new ERC20(this.connection, transactionalTokenAddress); await this._networkToken.start(); @@ -95,35 +92,35 @@ export class Network_v2 extends Model implements Deployable { _registryAddress = nativeZeroAddress) { const deployOptions = { // eslint-disable-next-line @typescript-eslint/no-explicit-any - data: (Network_v2Json as any).bytecode, - arguments: [_oracleTokenAddress, _registryAddress] + data: artifact.bytecode, + arguments: [_oracleTokenAddress, _registryAddress] as ContractConstructorArgs }; return this.deploy(deployOptions, this.connection.Account); } async getDivisor() { - return this.callTx(this.contract.methods.DIVISOR()); + return Number(await this.callTx(this.contract.methods.DIVISOR())); } async canceledBounties() { - return +(await this.callTx(this.contract.methods.canceledBounties())); + return Number(await this.callTx(this.contract.methods.canceledBounties())); } async closedBounties() { - return +(await this.callTx(this.contract.methods.closedBounties())); + return Number(await this.callTx(this.contract.methods.closedBounties())); } async treasuryInfo() { return treasuryInfo(await this.callTx(this.contract.methods.treasuryInfo()), this.divisor); } - /** - * Returns the number of open bounties - */ - async openBounties() { - return await this.bountiesIndex() - (await this.closedBounties() + await this.canceledBounties()); - } + // /** + // * Returns the number of open bounties + // */ + // async openBounties() { + // return await this.bountiesIndex() - (await this.closedBounties() + await this.canceledBounties()); + // } async councilAmount() { return fromSmartContractDecimals(await this.callTx(this.contract @@ -131,61 +128,61 @@ export class Network_v2 extends Model implements Deployable { } async oracleExchangeRate() { - return (await this.callTx(this.contract.methods.oracleExchangeRate())) / this.divisor; + return Number(await this.callTx(this.contract.methods.oracleExchangeRate())) / this.divisor; } /** * @returns number duration in milliseconds */ async disputableTime() { - return +(await this.callTx(this.contract.methods.disputableTime())) * Thousand; + return Number(await this.callTx(this.contract.methods.disputableTime())) * Thousand; } /** * @returns number duration in milliseconds */ async draftTime() { - return +(await this.callTx(this.contract.methods.draftTime())) * Thousand; + return Number(await this.callTx(this.contract.methods.draftTime())) * Thousand; } async bountiesIndex() { - return +(await this.callTx(this.contract.methods.bountiesIndex())); + return Number(await this.callTx(this.contract.methods.bountiesIndex())); } async disputes(address: string, bountyId: string | number, proposalId: string | number) { - const hash = this.web3.utils.keccak256(`${this.web3.utils.encodePacked(bountyId, proposalId)}`); + const hash = this.connection.utils.keccak256(`${this.connection.utils.encodePacked(bountyId, proposalId)}`); return fromSmartContractDecimals(await this.callTx(this.contract.methods.disputes(address, hash)), this.networkToken.decimals); } async mergeCreatorFeeShare() { - return (await this.callTx(this.contract.methods.mergeCreatorFeeShare())) / this.divisor; + return Number(await this.callTx(this.contract.methods.mergeCreatorFeeShare())) / this.divisor; } async proposerFeeShare() { - return (await this.callTx(this.contract.methods.proposerFeeShare())) / this.divisor; + return Number(await this.callTx(this.contract.methods.proposerFeeShare())) / this.divisor; } async oraclesDistributed() { - return fromSmartContractDecimals(await this.callTx(this.contract.methods.oraclesDistributed()), + return fromSmartContractDecimals(await this.callTx(this.contract.methods.oraclesDistributed()), this.networkToken.decimals); } async percentageNeededForDispute() { - return (await this.callTx(this.contract.methods.percentageNeededForDispute())) / this.divisor; + return Number(await this.callTx(this.contract.methods.percentageNeededForDispute())) / this.divisor; } async networkTokenAddress() { - return this.callTx(this.contract.methods.networkToken()); + return this.contract.methods.networkToken().call() } async registryAddress() { - return this.callTx(this.contract.methods.registry()); + return this.contract.methods.registry().call(); } async nftTokenAddress() { - return this.callTx(this.contract.methods.nftToken()); + return this.contract.methods.nftToken().call(); } async totalNetworkToken() { @@ -193,12 +190,12 @@ export class Network_v2 extends Model implements Deployable { this.networkToken.decimals); } - async getBountiesOfAddress(_address: string) { - return this.callTx(this.contract.methods.getBountiesOfAddress(_address)); - } + // async getBountiesOfAddress(_address: string) { + // return this.contract.methods.getBountiesOfAddress(_address).call(); + // } async getBounty(id: number) { - const chainInformation = await this.callTx(this.contract.methods.getBounty(id)); + const chainInformation: Bounty = await this.callTx(this.contract.methods.getBounty(id)); if (!chainInformation) throw new Error(`No bounty with ${id}`); @@ -312,23 +309,15 @@ export class Network_v2 extends Model implements Deployable { } async cancelableTime() { - return (await this.callTx(this.contract.methods.cancelableTime())) * Thousand; - } - - /** - * update the treasury address - * @param _address - */ - async updateTresuryAddress(_address: string) { - return this.sendTx(this.contract.methods.updateTresuryAddress(_address)); + return (await this.callTx(this.contract.methods.cancelableTime())) * Thousand; } /** * get total amount of oracles of an address */ async getOraclesOf(_address: string) { - const oracles = await this.callTx(this.contract.methods.oracles(_address)); - const value = new BigNumber(oracles.locked).plus(oracles.byOthers); + const oracles = await this.callTx<{locked: number, byOthers: number}>(this.contract.methods.oracles(_address)); + const value = new BigNumber(oracles.locked).plus(new BigNumber(oracles.byOthers)); return fromSmartContractDecimals(value, this.networkToken.decimals); } @@ -486,13 +475,13 @@ export class Network_v2 extends Model implements Deployable { userRepo: string, userBranch: string, cid: number) { - return this.sendTx(this.contract.methods.createPullRequest(forBountyId, + return this.sendTx(this.contract.methods.createPullRequest(BigInt(forBountyId), originRepo, originBranch, originCID, userRepo, userBranch, - cid)); + BigInt(cid))); } async cancelPullRequest(ofBounty: number, prId: number) { @@ -502,9 +491,9 @@ export class Network_v2 extends Model implements Deployable { /** * mark a PR ready for review */ - async markPullRequestReadyForReview(bountyId: number, pullRequestId: number) { - return this.sendTx(this.contract.methods.markPullRequestReadyForReview(bountyId, pullRequestId)); - } + // async markPullRequestReadyForReview(bountyId: number, pullRequestId: number) { + // return this.sendTx(this.contract.methods.markPullRequestReadyForReview(bountyId, pullRequestId)); + // } /** * create a proposal with a pull request for a bounty @@ -536,74 +525,72 @@ export class Network_v2 extends Model implements Deployable { } async cidBountyId(cid: string) { - return this.callTx(this.contract.methods.cidBountyId(cid)); + return Number(await this.callTx(this.contract.methods.cidBountyId(cid))); } async getDelegationsOf(address: string): Promise { - return (await this.callTx(this.contract.methods.getDelegationsFor(address))) + return (await this.callTx(this.contract.methods.getDelegationsFor(address))) .map((d, i) => delegationEntry(d, i, this.networkToken.decimals)) .filter(({amount}) => new BigNumber(amount).gt(0)); } - async getBountyCanceledEvents(filter: PastEventOptions): Promise[]> { + async getBountyCanceledEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyCanceled`, filter) } - async getBountyClosedEvents(filter: PastEventOptions): Promise[]> { + async getBountyClosedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyClosed`, filter) } - async getBountyCreatedEvents(filter: PastEventOptions): Promise[]> { + async getBountyCreatedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyCreated`, filter) } - async getBountyProposalCreatedEvents(filter: PastEventOptions): XPromiseEvent { + async getBountyProposalCreatedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyProposalCreated`, filter) } - async getBountyProposalDisputedEvents(filter: PastEventOptions): XPromiseEvent { + async getBountyProposalDisputedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyProposalDisputed`, filter) } - async getBountyProposalRefusedEvents(filter: PastEventOptions): XPromiseEvent { + async getBountyProposalRefusedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyProposalRefused`, filter) } - /* eslint-disable max-len */ - async getBountyPullRequestCanceledEvents(filter: PastEventOptions): XPromiseEvent { + async getBountyPullRequestCanceledEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyPullRequestCanceled`, filter) } - async getBountyPullRequestCreatedEvents(filter: PastEventOptions): XPromiseEvent { + async getBountyPullRequestCreatedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyPullRequestCreated`, filter) } - async getBountyPullRequestReadyForReviewEvents(filter: PastEventOptions): XPromiseEvent { + async getBountyPullRequestReadyForReviewEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyPullRequestReadyForReview`, filter) } - /* eslint-enable max-len */ - async getGovernorTransferredEvents(filter: PastEventOptions): Promise[]> { + async getGovernorTransferredEvents(filter: Filter) { return this.contract.self.getPastEvents(`GovernorTransferred`, filter) } - async getBountyFundedEvents(filter: PastEventOptions): Promise[]> { + async getBountyFundedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyFunded`, filter) } - async getBountyAmountUpdatedEvents(filter: PastEventOptions): Promise[]> { + async getBountyAmountUpdatedEvents(filter: Filter) { return this.contract.self.getPastEvents(`BountyAmountUpdated`, filter) } - async getOraclesChangedEvents(filter: PastEventOptions): Promise[]> { + async getOraclesChangedEvents(filter: Filter) { return this.contract.self.getPastEvents(`OraclesChanged`, filter) } - async getOraclesTransferEvents(filter: PastEventOptions): Promise[]> { + async getOraclesTransferEvents(filter: Filter) { return this.contract.self.getPastEvents(`OraclesTransfer`, filter) } - async getNetworkParamChangedEvents(filter: PastEventOptions): Promise[]> { + async getNetworkParamChangedEvents(filter: Filter) { return this.contract.self.getPastEvents(`NetworkParamChanged`, filter) } diff --git a/src/models/bounty-token.ts b/src/models/bepro/token/ERC721/bounty-token.ts similarity index 80% rename from src/models/bounty-token.ts rename to src/models/bepro/token/ERC721/bounty-token.ts index e7922bf7..38249a2d 100644 --- a/src/models/bounty-token.ts +++ b/src/models/bepro/token/ERC721/bounty-token.ts @@ -2,23 +2,22 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import BountyTokenJson from '@abi/BountyToken.json'; -import {BountyTokenMethods} from '@methods/bounty-token'; -import * as Events from '@events/bounty-token-events'; -import {XEvents} from '@events/x-events'; -import {PastEventOptions} from 'web3-eth-contract'; -import {AbiItem} from 'web3-utils'; import {nativeZeroAddress} from "@utils/constants"; +import artifact from "@interfaces/generated/abi/BountyToken"; +import {ContractConstructorArgs} from "web3-types/lib/types"; +import {Filter} from "web3"; -export class BountyToken extends Model implements Deployable { +type BountyTokenConnector = {originNetwork: string; bountyId: number; percentage: number; kind: string}; + +export class BountyToken extends Model implements Deployable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, BountyTokenJson.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } async deployJsonAbi(name_: string, symbol_: string, dispatcher_: string = nativeZeroAddress) { const deployOptions = { - data: BountyTokenJson.bytecode, - arguments: [name_, symbol_, dispatcher_] + data: artifact.bytecode, + arguments: [name_, symbol_, dispatcher_] as ContractConstructorArgs }; return this.deploy(deployOptions, this.connection.Account); @@ -100,7 +99,7 @@ export class BountyToken extends Model implements Deployable /** * See {IERC721-safeTransferFrom}. */ - async safeTransferFrom(from: string, to: string, tokenId: number, _data?: string) { + async safeTransferFrom(from: string, to: string, tokenId: number, _data = "0x0") { return this.callTx(this.contract.methods.safeTransferFrom(from, to, tokenId, _data)); } @@ -160,27 +159,27 @@ export class BountyToken extends Model implements Deployable return this.callTx(this.contract.methods.transferFrom(from, to, tokenId)); } - async awardBounty(to: string, uri: string, bountyId: number, percentage: number) { - return this.sendTx(this.contract.methods.awardBounty(to, uri, bountyId, percentage)); + async awardBounty(to: string, uri: string, options: BountyTokenConnector) { + return this.sendTx(this.contract.methods.awardBounty(to, uri, options)); } async getBountyToken(id: number) { return this.callTx(this.contract.methods.getBountyToken(id)); } - async getApprovalEvents(filter: PastEventOptions): Promise[]> { + async getApprovalEvents(filter: Filter) { return this.contract.self.getPastEvents(`Approval`, filter) } - async getApprovalForAllEvents(filter: PastEventOptions): Promise[]> { + async getApprovalForAllEvents(filter: Filter) { return this.contract.self.getPastEvents(`ApprovalForAll`, filter) } - async getGovernorTransferredEvents(filter: PastEventOptions): Promise[]> { + async getGovernorTransferredEvents(filter: Filter) { return this.contract.self.getPastEvents(`GovernorTransferred`, filter) } - async getTransferEvents(filter: PastEventOptions): Promise[]> { + async getTransferEvents(filter: Filter) { return this.contract.self.getPastEvents(`Transfer`, filter) } diff --git a/src/models/cerc20.ts b/src/models/cerc20.ts deleted file mode 100644 index 9b288172..00000000 --- a/src/models/cerc20.ts +++ /dev/null @@ -1,164 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import CERC20MockJson from '@abi/CERC20Mock.json'; -import {CERC20Methods} from '@methods/cerc20'; -import * as Events from '@events/cerc20-events'; -import {PastEventOptions} from 'web3-eth-contract'; -import {XEvents} from '@events/x-events'; -import {AbiItem} from 'web3-utils'; -import {ERC20} from '@models/erc20'; -import {Errors} from '@interfaces/error-enum'; -import {TransactionReceipt} from '@interfaces/web3-core'; -import {toSmartContractDecimals} from '@utils/numbers'; - -export class CERC20 extends Model implements Deployable { - private _erc20!: ERC20; - get erc20(): ERC20 { return this._erc20; } - - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, - contractAddress?: string, - readonly underlyingAddress?: string) { - super(web3Connection, CERC20MockJson.abi as AbiItem[], contractAddress); - } - - async start() { - await super.start(); - - if (this.contractAddress) { - if (!this.underlyingAddress) - throw new Error(Errors.MissingERC20UnderlyingToken); - - this._erc20 = new ERC20(this.connection, this.underlyingAddress); - await this._erc20.start(); - } - } - - async deployJsonAbi(underlying_: string, initialExchangeRate_: number, decimals_: number) { - const deployOptions = { - data: CERC20MockJson.bytecode, - arguments: [underlying_, initialExchangeRate_, decimals_] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - /** - * Function to check the amount of tokens that an owner allowed to a spender. - */ - async allowance(owner: string, spender: string) { - return this.callTx(this.contract.methods.allowance(owner, spender)); - } - - /** - * Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - */ - async approve(address: string, amount: string | number): Promise { - return this.sendTx(this.contract.methods.approve(address, - toSmartContractDecimals(amount, this.erc20.decimals))); - } - - /** - * Gets the balance of the specified address. - */ - async balanceOf(owner: string) { - return this.callTx(this.contract.methods.balanceOf(owner)); - } - - async decimals() { - return this.callTx(this.contract.methods.decimals()); - } - - /** - * Decrease the amount of tokens that an owner allowed to a spender. approve should be called when _allowances[msg.sender][spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event. - */ - async decreaseAllowance(spender: string, subtractedValue: number) { - return this.callTx(this.contract.methods.decreaseAllowance(spender, subtractedValue)); - } - - /** - * Increase the amount of tokens that an owner allowed to a spender. approve should be called when _allowances[msg.sender][spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event. - */ - async increaseAllowance(spender: string, addedValue: number) { - return this.callTx(this.contract.methods.increaseAllowance(spender, addedValue)); - } - - async initialBlockNumber() { - return this.callTx(this.contract.methods.initialBlockNumber()); - } - - async initialExchangeRate() { - return this.callTx(this.contract.methods.initialExchangeRate()); - } - - async isCToken() { - return this.callTx(this.contract.methods.isCToken()); - } - - /** - * Total number of tokens in existence - */ - async totalSupply() { - return this.callTx(this.contract.methods.totalSupply()); - } - - /** - * Transfer token to a specified address - */ - async transfer(to: string, value: number) { - return this.callTx(this.contract.methods.transfer(to, value)); - } - - /** - * Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event. - */ - async transferFrom(from: string, to: string, value: number) { - return this.callTx(this.contract.methods.transferFrom(from, to, value)); - } - - async underlying() { - return this.callTx(this.contract.methods.underlying()); - } - - /** - * This also accrues interest in a transaction - */ - async balanceOfUnderlying(owner: string) { - return this.callTx(this.contract.methods.balanceOfUnderlying(owner)); - } - - async exchangeRateCurrent() { - return this.callTx(this.contract.methods.exchangeRateCurrent()); - } - - /** - * Accrues interest whether or not the operation succeeds, unless reverted - */ - async mint(mintAmount: number) { - return this.callTx(this.contract.methods.mint(mintAmount)); - } - - /** - * This is just a mock - */ - async supplyUnderlying(supplyAmount: number) { - return this.callTx(this.contract.methods.supplyUnderlying(supplyAmount)); - } - - /** - * This is just a mock - */ - async redeemUnderlying(redeemAmount: number) { - return this.callTx(this.contract.methods.redeemUnderlying(redeemAmount)); - } - - async getApprovalEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`Approval`, filter) - } - - async getTransferEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`Transfer`, filter) - } - -} diff --git a/src/models/erc1155-ownable.ts b/src/models/erc1155-ownable.ts deleted file mode 100644 index 91fd90a0..00000000 --- a/src/models/erc1155-ownable.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { Model } from '@base/model'; -import { Web3Connection } from '@base/web3-connection'; -import { Web3ConnectionOptions } from '@interfaces/web3-connection-options'; -import { Deployable } from '@interfaces/deployable'; -import { XEvents } from '@events/x-events'; -import ERC1155OwnableJson from '@abi/ERC1155Ownable.json'; -import { ERC1155OwnableMethods } from '@methods/erc1155-ownable'; -import * as Events from '@events/erc1155-ownable-events'; -import { PastEventOptions } from 'web3-eth-contract'; -import { AbiItem } from 'web3-utils'; - -export class ERC1155Ownable extends Model implements Deployable { - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ERC1155OwnableJson.abi as AbiItem[], contractAddress); - } - - async deployJsonAbi(uri: string) { - const deployOptions = { - data: ERC1155OwnableJson.bytecode, - arguments: [uri] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async balanceOf(account: string, id: number){ - return Number(await this.callTx(this.contract.methods.balanceOf(account, id))); - } - - async balanceOfBatch(accounts: string[], ids: number[]){ - return (await this.callTx(this.contract.methods.balanceOfBatch(accounts, ids))) - .map((balance) => Number(balance)); - } - - async isApprovedForAll(account: string, operator: string){ - return this.callTx(this.contract.methods.isApprovedForAll(account, operator)); - } - - async owner(){ - return this.callTx(this.contract.methods.owner()); - } - - async safeBatchTransferFrom(from: string, to: string, ids: number[], amounts: number[], data: string){ - return this.sendTx(this.contract.methods.safeBatchTransferFrom(from, to, ids, amounts, data)); - } - - async safeTransferFrom(from: string, to: string, id: number, amount: number, data: string){ - return this.sendTx(this.contract.methods.safeTransferFrom(from, to, id, amount, data)); - } - - async setApprovalForAll(operator: string, approved: boolean){ - return this.sendTx(this.contract.methods.setApprovalForAll(operator, approved)); - } - - async supportsInterface(interfaceId: string){ - return this.callTx(this.contract.methods.supportsInterface(interfaceId)); - } - - async transferOwnership(newOwner: string){ - return this.sendTx(this.contract.methods.transferOwnership(newOwner)); - } - - async uri(v1: number){ - return this.callTx(this.contract.methods.uri(v1)); - } - - async setURI(uri: string){ - return this.sendTx(this.contract.methods.setURI(uri)); - } - - async mint(to: string, tokenId: number, amount: number, data: string){ - return this.sendTx(this.contract.methods.mint(to, tokenId, amount, data)); - } - - async mintBatch(to: string, tokenIds: number[], amounts: number[], data: string){ - return this.sendTx(this.contract.methods.mintBatch(to, tokenIds, amounts, data)); - } - - async getApprovalForAllEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`ApprovalForAll`, filter) - } - - async getOwnershipTransferredEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`OwnershipTransferred`, filter) - } - - async getTransferBatchEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`TransferBatch`, filter) - } - - async getTransferSingleEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`TransferSingle`, filter) - } - - async getURIEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`URI`, filter) - } -} diff --git a/src/models/eth-utils.ts b/src/models/eth-utils.ts deleted file mode 100644 index f5277eec..00000000 --- a/src/models/eth-utils.ts +++ /dev/null @@ -1,49 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import ETHUtilsJson from '@abi/ETHUtils.json'; -import {ETHUtilsMethods} from '@methods/eth-utils'; -import {AbiItem} from 'web3-utils'; -import blockNumberAndTimestamp from '@utils/block-number-timestamp'; -import {fromSmartContractDate} from '@utils/numbers'; - -export class ETHUtils extends Model implements Deployable { - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ETHUtilsJson.abi as AbiItem[], contractAddress); - } - - async deployJsonAbi() { - const deployOptions = { - data: ETHUtilsJson.bytecode, - arguments: [] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async name(tokenAddress: string) { - return this.callTx(this.contract.methods.name(tokenAddress)); - } - - async symbol(tokenAddress: string) { - return this.callTx(this.contract.methods.symbol(tokenAddress)); - } - - async decimals(tokenAddress: string) { - return this.callTx(this.contract.methods.decimals(tokenAddress)); - } - - async blockNumber() { - return this.callTx(this.contract.methods.blockNumber()); - } - - async blockTimestamp() { - return fromSmartContractDate(await this.callTx(this.contract.methods.blockTimestamp())); - } - - async blockNumberAndTimestamp() { - return blockNumberAndTimestamp(await this.callTx(this.contract.methods.blockNumberAndTimestamp())); - } - -} diff --git a/src/models/loophole.ts b/src/models/loophole.ts deleted file mode 100644 index 3a59b090..00000000 --- a/src/models/loophole.ts +++ /dev/null @@ -1,229 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import LoopholeJson from '@abi/Loophole.json'; -import {LoopholeMethods} from '@methods/loophole'; -import {AbiItem} from 'web3-utils'; -import {ERC20} from '@models/erc20'; -import {Errors} from '@interfaces/error-enum'; -import {UniswapV3RouterBridge} from '@models/uniswap-v3-router-bridge'; -import {fromDecimals, toSmartContractDecimals} from '@utils/numbers'; -import lhUserInfo from '@utils/loophole-user-info'; -import lhPoolInfo from '@utils/loophole-pool-info'; -import {ETHUtils} from '@models/eth-utils'; -import lhPoolUpdate from '@utils/loophole-pool-update'; -import {IsOwnable} from '@interfaces/modifiers'; -import {Ownable} from '@base/ownable'; - -export class Loophole extends Model implements Deployable, IsOwnable { - constructor(web3Connection: Web3Connection | Web3ConnectionOptions, - contractAddress?: string, - readonly ethUtilsAddress?: string, - readonly lpTokenAddress?: string, - readonly swapRouterAddress?: string) { - super(web3Connection, LoopholeJson.abi as AbiItem[], contractAddress); - } - - private _erc20!: ERC20; - private _swap!: UniswapV3RouterBridge; - private _ethUtils!: ETHUtils; - private _ownable!: Ownable; - - get ownable() { return this._ownable; } - get erc20() { return this._erc20; } - get swap() { return this._swap; } - get ethUtils() { return this._ethUtils; } - - async loadDependencies() { - if (!this.ethUtilsAddress) - throw new Error(Errors.MissingEthUtilsAddressPleaseProvideOne); - - this._ethUtils = new ETHUtils(this.connection, this.ethUtilsAddress); - this._ownable = new Ownable(this); - - const lpTokenAddress = await this.lpToken(); - if (!lpTokenAddress) - throw new Error(Errors.MissingLpTokenAddressPleaseDeployUsingOne); - - this._erc20 = new ERC20(this.connection, lpTokenAddress); - - const swapRouterAddress = await this.swapRouter(); - if (!swapRouterAddress) - throw new Error(Errors.MissingSwapAddressPleaseDeployUsingOne); - - this._swap = new UniswapV3RouterBridge(this.connection, swapRouterAddress); - - await this._erc20.start(); - await this._swap.start(); - await this._ethUtils.start(); - } - - async start() { - await super.start(); - - if (!this.contractAddress) - return; - - await this.loadDependencies() - } - - async deployJsonAbi(_swapRouter: string, - _lpToken: string, - _lpTokensPerBlock: number, - _startBlock: number, - _exitPenalty: number, - _exitPenaltyLP: number) { - - const erc20 = new ERC20(this.connection, _lpToken); - await erc20.start(); - const lpTokensPerBlock = toSmartContractDecimals(_lpTokensPerBlock, erc20.decimals); - - const deployOptions = { - data: LoopholeJson.bytecode, - arguments: [_swapRouter, _lpToken, lpTokensPerBlock, _startBlock, _exitPenalty, _exitPenaltyLP] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async LPtokensPerShareMultiplier() { - return this.callTx(this.contract.methods.LPtokensPerShareMultiplier()); - } - - async exitPenalty() { - return await this.callTx(this.contract.methods.exitPenalty()) / 100; - } - - async exitPenaltyLP() { - return await this.callTx(this.contract.methods.exitPenaltyLP()) / 100; - } - - async lpToken() { - if (this.lpTokenAddress) - return this.lpTokenAddress; - return this.callTx(this.contract.methods.lpToken()); - } - - async lpTokensPerBlock() { - return fromDecimals(await this.callTx(this.contract.methods.lpTokensPerBlock()), this.erc20.decimals); - } - - async owner() { - return this.callTx(this.contract.methods.owner()); - } - - async poolExists(v1: string) { - return this.callTx(this.contract.methods.poolExists(v1)); - } - - async startBlock() { - return this.callTx(this.contract.methods.startBlock()); - } - - async swapRouter() { - if (this.swapRouterAddress) - return this.swapRouterAddress; - return this.callTx(this.contract.methods.swapRouter()); - } - - async totalAllocPoint() { - return this.callTx(this.contract.methods.totalAllocPoint()); - } - - async uniswapPoolFee() { - return this.callTx(this.contract.methods.uniswapPoolFee()); - } - - async add(token: string, allocPoint: number) { - return this.callTx(this.contract.methods.add(token, allocPoint)); - } - - async set(pid: number, allocPoint: number, withUpdate: boolean) { - return this.sendTx(this.contract.methods.set(pid, allocPoint, withUpdate)); - } - - async stake(pid: number, amount: number) { - return this.sendTx(this.contract.methods.stake(pid, amount)); - } - - async exit(amount: number, pid?: number, amountOutMinimum?: number) { - if (!pid && !amountOutMinimum && amount) - return this.callTx(this.contract.methods.exit(amount)); - - return this.callTx(this.contract.methods.exit(pid!, amount, amountOutMinimum)); - } - - async getUserReward(pid: number, userAddress: string) { - return this.callTx(this.contract.methods.getUserReward(pid, userAddress)); - } - - async collectRewards(pid: number) { - return this.callTx(this.contract.methods.collectRewards(pid)); - } - - async currentStake(pid: number, user: string) { - return this.callTx(this.contract.methods.currentStake(pid, user)); - } - - async earnings(pid: number, user: string) { - return this.callTx(this.contract.methods.earnings(pid, user)); - } - - async getBlocksFromRange(from: number, to: number) { - return this.callTx(this.contract.methods.getBlocksFromRange(from, to)); - } - - async massUpdatePools() { - return this.sendTx(this.contract.methods.massUpdatePools()); - } - - async updatePool(pid: number) { - return lhPoolUpdate(await this.callTx(this.contract.methods.updatePool(pid))); - } - - async getPoolReward(pid: number) { - return fromDecimals(await this.callTx(this.contract.methods.getPoolReward(pid)), this.erc20.decimals); - } - - async getBlockTimestamp() { - return this.callTx(this.contract.methods.getBlockTimestamp()); - } - - async getBlockNumber() { - return this.callTx(this.contract.methods.getBlockNumber()); - } - - async getPool(pid: number) { - const rawInfo = await this.callTx(this.contract.methods.getPool(pid)) - const decimals = await this.ethUtils.decimals(rawInfo[0]); - return lhPoolInfo(rawInfo, decimals, await this.LPtokensPerShareMultiplier()); - } - - async getPoolInfo(pid: number) { - const rawInfo = await this.callTx(this.contract.methods.getPoolInfo(pid)); - const decimals = await this.ethUtils.decimals(rawInfo[0]); - return lhPoolInfo(rawInfo, decimals, await this.LPtokensPerShareMultiplier()); - } - - async poolsCount() { - return this.callTx(this.contract.methods.poolsCount()); - } - - async getUserInfo(pid: number, user: string) { - return lhUserInfo(await this.callTx(this.contract.methods.getUserInfo(pid, user))); - } - - async getTotalEntryStakeUser(pid: number, user: string) { - return this.callTx(this.contract.methods.getTotalEntryStakeUser(pid, user)); - } - - async getTotalUnstakeUser(pid: number, user: string) { - return this.callTx(this.contract.methods.getTotalUnstakeUser(pid, user)); - } - - async getEntryStakeAdjusted(pid: number, user: string) { - return this.callTx(this.contract.methods.getEntryStakeAdjusted(pid, user)); - } - -} diff --git a/src/models/network-factory.ts b/src/models/network-factory.ts deleted file mode 100644 index 5e2d24e8..00000000 --- a/src/models/network-factory.ts +++ /dev/null @@ -1,93 +0,0 @@ -import {Model} from '@base/model'; -import {NetworkFactoryMethods} from '@methods/network-factory'; -import {Deployable} from '@interfaces/deployable'; -import {TransactionReceipt} from '@interfaces/web3-core'; -import NetworkFactoryAbi from '@abi/NetworkFactory.json'; -import {Web3Connection} from '@base/web3-connection'; -import {AbiItem} from 'web3-utils'; -import {ERC20} from '@models/erc20'; -import {fromDecimals, toSmartContractDecimals} from '@utils/numbers'; -import {Errors} from '@interfaces/error-enum'; - -export class NetworkFactory extends Model implements Deployable { - private _erc20!: ERC20; - get erc20() { return this._erc20; } - - constructor(web3Connection: Web3Connection, contractAddress?: string) { - super(web3Connection, NetworkFactoryAbi.abi as AbiItem[], contractAddress); - } - - async getNetworkByAddress(address: string) { - return this.callTx(this.contract.methods.getNetworkByAddress(address)); - } - - async getNetworkById(id: number) { - return this.callTx(this.contract.methods.getNetworkById(id)) - } - - async getAmountOfNetworksForked() { - return +(await this.callTx(this.contract.methods.networksAmount())); - } - - async getBEPROLocked() { - return fromDecimals(await this.callTx(this.contract.methods.tokensLockedTotal()), this.erc20.decimals) - } - - async getLockedStakedByAddress(address: string) { - return fromDecimals(await this.callTx(this.contract.methods.tokensLocked(address)), this.erc20.decimals); - } - - async OPERATOR_AMOUNT() { - return fromDecimals(await this.callTx(this.contract.methods.OPERATOR_AMOUNT()), this.erc20.decimals); - } - - async isOperator(address: string) { - return await this.getLockedStakedByAddress(address) >= await this.OPERATOR_AMOUNT() - } - - async approveSettlerERC20Token() { - return this.erc20.approve(this.contractAddress!, await this.erc20.totalSupply()) - } - - async isApprovedSettlerToken(address: string = this.contractAddress!, amount: number) { - return this.erc20.isApproved(address, amount) - } - - async getSettlerTokenAddress() { - return this.callTx(this.contract.methods.beproAddress()); - } - - async lock(amount: string | number) { - if (amount <= 0) - throw new Error(Errors.AmountNeedsToBeHigherThanZero); - - return this.sendTx(this.contract.methods.lock(toSmartContractDecimals(amount, this.erc20.decimals))) - } - - async unlock() { - return this.sendTx(this.contract.methods.unlock()); - } - - async createNetwork(erc20: string, transactionalToken: string) { - return this.sendTx(this.contract.methods.createNetwork(erc20, transactionalToken)); - } - - async start() { - await super.start(); - - if (!this.contract) - return; - - this._erc20 = new ERC20(this.connection, await this.getSettlerTokenAddress()); - await this._erc20.start(); - } - - deployJsonAbi(erc20ContractAddress: string): Promise { - const deployOptions = { - data: NetworkFactoryAbi.bytecode, - arguments: [erc20ContractAddress] - } - - return this.deploy(deployOptions, this.connection.Account); - } -} diff --git a/src/models/network.ts b/src/models/network.ts deleted file mode 100644 index 8da07303..00000000 --- a/src/models/network.ts +++ /dev/null @@ -1,294 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import * as NetworkAbi from '@abi/Network.json'; -import {ERC20} from '@models/erc20'; -import {fromDecimals, toSmartContractDecimals} from '@utils/numbers'; -import {TransactionReceipt} from '@interfaces/web3-core'; -import networkIssue from '@utils/network-issue'; -import {NetworkIssue} from '@interfaces/network-issue'; -import networkMerge from '@utils/network-merge'; -import {Errors} from '@interfaces/error-enum'; -import {Deployable} from '@interfaces/deployable'; -import {NetworkMethods} from '@methods/network'; -import {OraclesSummary} from '@interfaces/oracles-summary'; -import {AbiItem} from 'web3-utils'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import * as Events from '@events/network-events'; -import {PastEventOptions} from 'web3-eth-contract'; -import {XEvents} from '@events/x-events'; - -export class Network extends Model implements Deployable { - private _transactionToken!: ERC20; - private _settlerToken!: ERC20; - get transactionToken() { return this._transactionToken; } - get settlerToken() { return this._settlerToken; } - - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, NetworkAbi.abi as AbiItem[], contractAddress); - } - - async getTransactionTokenAddress() { - return this.callTx(await this.contract.methods.transactionToken()); - } - - async getSettlerTokenAddress() { - return this.callTx(await this.contract.methods.settlerToken()); - } - - async getIssuesByAddress(address: string) { - const ids = await this.callTx(await this.contract.methods.getIssuesByAddress(address)); - return ids.map(id => +id); - } - - async getAmountOfIssuesOpened(): Promise { - return +(await this.callTx(await this.contract.methods.incrementIssueID())); - } - - async getAmountOfIssuesClosed() { - return +(await this.callTx(await this.contract.methods.closedIdsCount())); - } - - async getOraclesByAddress(address: string) { - return fromDecimals(await this.callTx(await this.contract - .methods - .getOraclesByAddress(address)), this.settlerToken.decimals); - } - - async getOraclesSummary(address: string): Promise { - const {'0': oraclesDelegatedByOthers, '1': amounts, '2': addresses, '3': tokensLocked} = - await this.callTx(await this.contract.methods.getOraclesSummary(address)); - - - const decimals = this.settlerToken.decimals; - - return { - oraclesDelegatedByOthers: fromDecimals(oraclesDelegatedByOthers, this.settlerToken.decimals), - amounts: amounts.map((amount: number) => fromDecimals(amount, decimals)), - addresses, - tokensLocked: fromDecimals(tokensLocked, decimals), - } - } - - async percentageNeededForDispute() { - return +(await this.callTx(this.contract.methods.percentageNeededForDispute())); - } - - async mergeCreatorFeeShare() { - return +(await this.callTx(this.contract.methods.mergeCreatorFeeShare())); - } - - async disputesForMergeByAddress(issueId: number, proposalId: number, address: string) { - return +(await this.callTx(this.contract.methods.disputesForMergeByAddress(issueId, proposalId, address))); - } - - async disputableTime() { - return +(await this.callTx(this.contract.methods.disputableTime())); - } - - async redeemTime() { - return +(await this.callTx(this.contract.methods.redeemTime())) - } - - async getTokensStaked() { - return fromDecimals(await this.callTx(this.contract.methods.totalStaked()), this.transactionToken.decimals); - } - - async getBEPROStaked() { - return fromDecimals(await this.callTx(this.contract.methods.oraclesStaked()), this.settlerToken.decimals) - } - - async COUNCIL_AMOUNT() { - return fromDecimals(await this.callTx(this.contract.methods.COUNCIL_AMOUNT()), this.settlerToken.decimals); - } - - async isCouncil(address: string): Promise { - return await this.getOraclesByAddress(address) >= await this.COUNCIL_AMOUNT(); - } - - async changeCouncilAmount(value: string) { - const amount = toSmartContractDecimals(value, this.settlerToken.decimals); - return this.sendTx(this.contract.methods.changeCOUNCIL_AMOUNT(amount)); - } - - async changeRedeemTime(amount: number) { - return this.sendTx(this.contract.methods.changeRedeemTime(amount as number)); - } - - async changeDisputableTime(amount: number) { - return this.sendTx(this.contract.methods.changeDisputableTime(amount)); - } - - async isIssueInDraft(issueId: number) { - return !!(await this.callTx(this.contract.methods.isIssueInDraft(issueId))); - } - - async isMergeDisputed(issueId: number, mergeId: number) { - return !!(await this.callTx(this.contract.methods.isMergeDisputed(issueId, mergeId))); - } - - async isMergeInDraft(id: number, mergeId: number) { - return !!(await this.callTx(this.contract.methods.isMergeInDraft(id, mergeId))) - } - - async getIssueByCID(cid: string): Promise { - return networkIssue(await this.callTx(this.contract.methods.getIssueByCID(cid)), this.transactionToken.decimals); - } - - async getIssueById(id: number): Promise { - return networkIssue(await this.callTx(this.contract - .methods.getIssueById(id)), this.transactionToken.decimals); - } - - async getMergeById(issueId: number, mergeId: number): Promise { - return networkMerge(await this.callTx(this.contract - .methods.getMergeById(issueId, mergeId)), this.transactionToken.decimals) - } - - async approveSettlerERC20Token(amount?: string | number, address = this.contractAddress!) { - if (!amount) - amount = await this.settlerToken.totalSupply(); - - return this.settlerToken.approve(address, amount); - } - - async approveTransactionalERC20Token(amount?: string | number, address = this.contractAddress!) { - if (!amount) - amount = await this.transactionToken.totalSupply(); - - return this.transactionToken.approve(address, amount) - } - - async isApprovedSettlerToken(amount: number, address: string = this.contractAddress!) { - return this.settlerToken.isApproved(address, amount) - } - - async isApprovedTransactionalToken(amount: number, address: string = this.contractAddress!) { - return this.transactionToken.isApproved(address, amount) - } - - async lock(amount: string | number): Promise { - if (amount <= 0) - throw new Error(Errors.AmountNeedsToBeHigherThanZero); - - amount = toSmartContractDecimals(amount, this.settlerToken.decimals); - return this.sendTx(this.contract.methods.lock(amount)) - } - - async unlock(amount: string | number, from: string) { - if (amount <= 0) - throw new Error(Errors.AmountNeedsToBeHigherThanZero); - - amount = toSmartContractDecimals(amount, this.settlerToken.decimals); - return this.sendTx(this.contract.methods.unlock(amount, from)) - } - - async delegateOracles(amount: string | number, delegateTo: string) { - if (amount <= 0) - throw new Error(Errors.AmountNeedsToBeHigherThanZero); - - amount = toSmartContractDecimals(amount, this.transactionToken.decimals); - return this.sendTx(this.contract.methods.delegateOracles(amount, delegateTo)) - } - - async openIssue(cid: string, amount: string | number) { - if (amount <= 0) - throw new Error(Errors.AmountNeedsToBeHigherThanZero); - - amount = toSmartContractDecimals(amount, this.settlerToken.decimals); - return this.sendTx(this.contract.methods.openIssue(cid, amount)) - } - - async updateIssue(id: number, amount: string | number) { - amount = toSmartContractDecimals(amount, this.settlerToken.decimals); - return this.sendTx(this.contract.methods.updateIssue(id, amount)) - } - - async recognizeAsFinished(id: number) { - return this.sendTx(this.contract.methods.recognizeAsFinished(id)) - } - - async redeemIssue(id: number) { - return this.sendTx(this.contract.methods.redeemIssue(id)) - } - - async closeIssue(id: number, mergeId: number) { - return this.sendTx(this.contract.methods.closeIssue(id, mergeId)) - } - - async disputeMerge(id: number, mergeId: number) { - return this.sendTx(this.contract.methods.disputeMerge(id, mergeId)) - } - - async proposeIssueMerge(id: number, prAddresses: string[], prAmounts: number[]) { - const mapToSmartContract = (amount: number) => - toSmartContractDecimals(amount, this.transactionToken.decimals) - - const amounts = prAmounts.map(mapToSmartContract); - - return this.sendTx(this.contract.methods.proposeIssueMerge(id, prAddresses, amounts)) - } - - async start() { - await super.start(); - - if (!this.contract) - return; - - const transactionAddress = await this.getTransactionTokenAddress(); - const settlerAddress = await this.getSettlerTokenAddress(); - - this._transactionToken = new ERC20(this.connection, transactionAddress); - this._settlerToken = new ERC20(this.connection, settlerAddress); - - await this._transactionToken.start(); - await this._settlerToken.start(); - } - - - deployJsonAbi(settlerAddress: string, transactionalAddress: string, governanceAddress: string) { - - const deployOptions = { - data: NetworkAbi.bytecode, - arguments: [settlerAddress, transactionalAddress, governanceAddress] - } - - return this.deploy(deployOptions, this.connection.Account); - } - - async getCloseIssueEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`CloseIssue`, filter) - } - - async getDisputeMergeEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`DisputeMerge`, filter) - } - - async getGovernorTransferredEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`GovernorTransferred`, filter) - } - - async getMergeProposalCreatedEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`MergeProposalCreated`, filter) - } - - async getOpenIssueEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`OpenIssue`, filter) - } - - async getPausedEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`Paused`, filter) - } - - async getRecognizedAsFinishedEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`RecognizedAsFinished`, filter) - } - - async getRedeemIssueEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`RedeemIssue`, filter) - } - - async getUnpausedEvents(filter: PastEventOptions): Promise[]> { - return this.contract.self.getPastEvents(`Unpaused`, filter) - } - -} diff --git a/src/models/real-fevr-marketplace.ts b/src/models/real-fevr-marketplace.ts deleted file mode 100644 index fdda5d10..00000000 --- a/src/models/real-fevr-marketplace.ts +++ /dev/null @@ -1,123 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import RealFevrMarketplaceJson from '@abi/RealFevrMarketplace.json'; -import {RealFevrMarketplaceMethods} from '@methods/real-fevr-marketplace'; -import {AbiItem} from 'web3-utils'; -import {Errors} from '@interfaces/error-enum'; -import {ERC20} from '@models/erc20'; -import {RealFevrOpener} from '@models/real-fevr-opener'; -import {toSmartContractDecimals} from '@utils/numbers'; -import {nativeZeroAddress} from '@utils/constants'; - -export class RealFevrMarketplace extends Model implements Deployable { - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, - contractAddress?: string, - readonly collectiblesAddress?: string, - readonly tokenAddress?: string) { - super(web3Connection, RealFevrMarketplaceJson.abi as AbiItem[], contractAddress); - } - - get isETHTransaction() { return this.tokenAddress === nativeZeroAddress; } - - private _decimals = 18; - get decimals(): number { return this._decimals; } - - private _erc20!: ERC20; - get erc20() { return this._erc20; } - - private _opener!: RealFevrOpener; - get opener() { return this._opener; } - - /* eslint-disable complexity */ - async start() { - await super.start(); - - if (!this.contractAddress) - return; - - const tokenAddress = await this.getERC20TokenAddress(); - if (!tokenAddress) - throw new Error(Errors.MissingERC20AddressOnContract); - - const collectiblesAddress = await this.getERC721TokenAddress(); - if (!collectiblesAddress) - throw new Error(Errors.MissingERC721AddressOnContract); - - if (tokenAddress !== nativeZeroAddress) { - // Set Token Address Contract for easy access - this._erc20 = new ERC20(this.connection, tokenAddress); - await this._erc20.start(); - this._decimals = this._erc20.decimals; - } - - this._opener = new RealFevrOpener(this.connection, collectiblesAddress); - await this._opener.start(); - } - /* eslint-enable complexity */ - - /** - * The marketplace can be deployed on a native-transactions mode; simply assign tokenAddress to - * the null wallet '0x0000000000000000000000000000000000000000', and all transactions will be - * resolved via the chain's native token. - */ - async deployJsonAbi(collectiblesAddress: string, tokenAddress: string) { - const deployOptions = { - data: RealFevrMarketplaceJson.bytecode, - arguments: [tokenAddress, collectiblesAddress] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async putERC721OnSale(tokenId: number, price: number) { - const valueWithDecimals = toSmartContractDecimals(price, this.decimals); - return this.sendTx(this.contract.methods.putERC721OnSale(tokenId, valueWithDecimals)); - } - - async removeERC721FromSale(tokenId: number) { - return this.sendTx(this.contract.methods.removeERC721FromSale(tokenId)); - } - - async buyERC721(tokenId: number, value = 0) { - const valueWithDecimals = toSmartContractDecimals(value, this.decimals); - return this.sendTx(this.contract.methods.buyERC721(tokenId), valueWithDecimals); - } - - async changeERC20(erc20TokenAddress: string) { - return this.sendTx(this.contract.methods.changeERC20(erc20TokenAddress)); - } - - async changeERC721(openerTokenAddress: string) { - return this.sendTx(this.contract.methods.changeERC721(openerTokenAddress)); - } - - async setFixedFees(feeAddress: string, feePercentage: number) { - return this.sendTx(this.contract.methods.setFixedFees(feeAddress, feePercentage)); - } - - async getERC20TokenAddress() { - if (this.tokenAddress) - return this.tokenAddress; - return this.callTx(this.contract.methods.erc20Address()); - } - - async getERC721TokenAddress() { - if (this.collectiblesAddress) - return this.collectiblesAddress; - return this.callTx(this.contract.methods.erc721Address()); - } - - async getFeeAddress() { - return this.callTx(this.contract.methods.feeAddress()); - } - - async getAmountofNFTsEverInSale() { - return parseInt(await this.callTx(this.contract.methods.saleIncrementId()) as unknown as string, 10) - 1; - } - - async approveERC721use(operator: string, approved = true) { - return this.opener.setApprovalForAll(operator, approved); - } -} diff --git a/src/models/real-fevr-opener.ts b/src/models/real-fevr-opener.ts deleted file mode 100644 index d2d76509..00000000 --- a/src/models/real-fevr-opener.ts +++ /dev/null @@ -1,281 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import RealFevrOpenerJson from '@abi/RealFevrOpener.json'; -import {RealFevrOpenerMethods} from '@methods/real-fevr-opener'; -import {AbiItem} from 'web3-utils'; -import {ERC20} from '@models/erc20'; -import {fromDecimals, toSmartContractDate, toSmartContractDecimals} from '@utils/numbers'; -import realFevrMarketplaceDistributions from '@utils/real-fevr-marketplace-distributions'; -import realFevrPack from '@utils/real-fevr-pack'; -import {nativeZeroAddress} from '@utils/constants'; -import {Errors} from '@interfaces/error-enum'; - -export class RealFevrOpener extends Model implements Deployable { - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, - contractAddress?: string, - readonly purchaseTokenAddress?: string) { - super(web3Connection, RealFevrOpenerJson.abi as AbiItem[], contractAddress); - } - - private _decimals = 18; - get decimals(): number { return this._decimals; } - - private _erc20!: ERC20; - get erc20() { return this._erc20; } - - - async start() { - await super.start(); - - if (!this.contract) - return; - - const purchaseToken = await this._purchaseToken(); - if (!purchaseToken) - throw new Error(Errors.MissingERC20AddressOnContractPleaseSetPurchaseToken); - - if (purchaseToken !== nativeZeroAddress) { - this._erc20 = new ERC20(this.connection, purchaseToken); - this._decimals = this._erc20.decimals; - } - } - - async deployJsonAbi(name: string, symbol: string, _purchaseToken: string) { - const deployOptions = { - data: RealFevrOpenerJson.bytecode, - arguments: [name, symbol, _purchaseToken] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async getAmountOfPacksOpened() { - return this.callTx(this.contract.methods._openedPacks()); - } - - async _purchaseToken() { - if (this.purchaseTokenAddress) - return this.purchaseTokenAddress; - return this.callTx(this.contract.methods._purchaseToken()); - } - - async _realFvrTokenPriceUSD() { - return this.callTx(this.contract.methods._realFvrTokenPriceUSD()); - } - - async alreadyMinted(v1: number) { - return this.callTx(this.contract.methods.alreadyMinted(v1)); - } - - async approve(to: string, tokenId: number) { - return this.sendTx(this.contract.methods.approve(to, tokenId)); - } - - async balanceOf(owner: string) { - return this.callTx(this.contract.methods.balanceOf(owner)); - } - - async baseURI() { - return this.callTx(this.contract.methods.baseURI()); - } - - async getApproved(tokenId: number) { - return this.callTx(this.contract.methods.getApproved(tokenId)); - } - - async isApprovedForAll(owner: string, operator: string) { - return this.callTx(this.contract.methods.isApprovedForAll(owner, operator)); - } - - async lastNFTID() { - return this.callTx(this.contract.methods.lastNFTID()); - } - - async name() { - return this.callTx(this.contract.methods.name()); - } - - async owner() { - return this.callTx(this.contract.methods.owner()); - } - - async ownerOf(tokenId: number) { - return this.callTx(this.contract.methods.ownerOf(tokenId)); - } - - async packIncrementId() { - return this.callTx(this.contract.methods.packIncrementId()); - } - - async packs(v1: number) { - return this.callTx(this.contract.methods.packs(v1)); - } - - async registeredIDs(v1: string, v2: number) { - return this.callTx(this.contract.methods.registeredIDs(v1, v2)); - } - - async registeredIDsArray(v1: string, v2: number) { - return this.callTx(this.contract.methods.registeredIDsArray(v1, v2)); - } - - async safeTransferFrom(from: string, to: string, tokenId: number, _data?: string) { - return this.sendTx(this.contract.methods.safeTransferFrom(from, to, tokenId, _data)); - } - - async setApprovalForAll(operator: string, approved: boolean) { - return this.sendTx(this.contract.methods.setApprovalForAll(operator, approved)); - } - - async supportsInterface(interfaceId: string) { - return this.callTx(this.contract.methods.supportsInterface(interfaceId)); - } - - async symbol() { - return this.callTx(this.contract.methods.symbol()); - } - - async tokenByIndex(index: number) { - return this.callTx(this.contract.methods.tokenByIndex(index)); - } - - async tokenOfOwnerByIndex(owner: string, index: number) { - return this.callTx(this.contract.methods.tokenOfOwnerByIndex(owner, index)); - } - - async tokenURI(tokenId: number) { - return this.callTx(this.contract.methods.tokenURI(tokenId)); - } - - async totalSupply() { - return this.callTx(this.contract.methods.totalSupply()); - } - - async transferFrom(from: string, to: string, tokenId: number) { - return this.sendTx(this.contract.methods.transferFrom(from, to, tokenId)); - } - - async transferOwnership(newOwner: string) { - return this.sendTx(this.contract.methods.transferOwnership(newOwner)); - } - - async setTokenURI(tokenId: number, uri: string) { - return this.sendTx(this.contract.methods.setTokenURI(tokenId, uri)); - } - - async setBaseURI(baseURI: string) { - return this.sendTx(this.contract.methods.setBaseURI(baseURI)); - } - - async exists(tokenId: number) { - return this.callTx(this.contract.methods.exists(tokenId)); - } - - async getRegisteredIDs(_address: string) { - return this.callTx(this.contract.methods.getRegisteredIDs(_address)); - } - - async getMarketplaceDistributionForERC721(tokenId: number) { - return realFevrMarketplaceDistributions(await this.callTx(this.contract - .methods - .getMarketplaceDistributionForERC721(tokenId))); - } - - async getPurchaseToken() { - return this.callTx(this.contract.methods._purchaseToken()); - } - - async getTokenWorthof1USD() { - return fromDecimals(await this.callTx(this.contract.methods._realFvrTokenPriceUSD()), this.decimals); - } - - async getPackbyId(_packId: number) { - return realFevrPack(await this.callTx(this.contract.methods.getPackbyId(_packId)), 3); - } - - async getPackPriceInFVR(packId: number) { - return this.callTx(this.contract.methods.getPackPriceInFVR(packId)); - } - - async buyPack(packId: number) { - return this.sendTx(this.contract.methods.buyPack(packId)); - } - - async buyPacks(packIds: number[]) { - return this.sendTx(this.contract.methods.buyPacks(packIds)); - } - - async openPack(packId: number) { - return this.sendTx(this.contract.methods.openPack(packId)); - } - - async openPacks(packIds: number[]) { - return this.sendTx(this.contract.methods.openPacks(packIds)); - } - - async createPack(nftAmount: number, - price: number, serie: string, - packType: string, - drop: string, - saleStart: number, - saleDistributionAddresses: string[], - saleDistributionAmounts: number[], - marketplaceDistributionAddresses: string[], - marketplaceDistributionAmounts: number[]) { - return this.sendTx(this.contract.methods.createPack(nftAmount, - toSmartContractDecimals(price, 3), - serie, - packType, - drop, - toSmartContractDate(saleStart), - saleDistributionAddresses, - saleDistributionAmounts, - marketplaceDistributionAddresses, - marketplaceDistributionAmounts)); - } - - async offerPack(packId: number, receivingAddress: string) { - return this.sendTx(this.contract.methods.offerPack(packId, receivingAddress)); - } - - async editPackInfo(_packId: number, - _saleStart: number, - serie: string, - packType: string, - drop: string, - price: number) { - return this.sendTx(this.contract.methods.editPackInfo(_packId, - toSmartContractDate(_saleStart), - serie, - packType, - drop, - toSmartContractDecimals(price, 3))); - } - - async deletePackById(packId: number) { - return this.sendTx(this.contract.methods.deletePackById(packId)); - } - - async mint(tokenIdToMint: number) { - return this.sendTx(this.contract.methods.mint(tokenIdToMint)); - } - - async setPurchaseTokenAddress(purchaseToken: string) { - return this.sendTx(this.contract.methods.setPurchaseTokenAddress(purchaseToken)); - } - - async setTokenPriceInUSD(newPrice: number) { - return this.sendTx(this.contract.methods.setTokenPriceInUSD(newPrice)); - } - - async lock() { - return this.sendTx(this.contract.methods.lock()); - } - - async unlock() { - return this.sendTx(this.contract.methods.unlock()); - } - -} diff --git a/src/models/sablier.ts b/src/models/sablier.ts deleted file mode 100644 index 21458ad8..00000000 --- a/src/models/sablier.ts +++ /dev/null @@ -1,154 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import SablierJson from '@abi/Sablier.json'; -import {SablierMethods} from '@methods/sablier'; -import {AbiItem} from 'web3-utils'; -import {fromDecimals, toSmartContractDecimals} from '@utils/numbers'; -import sablierStream from '@utils/sablier-stream'; -import sablierCompoundingStream from '@utils/sablier-compounding-stream'; -import sablierInterest from '@utils/sablier-interest'; - -export class Sablier extends Model implements Deployable { - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, SablierJson.abi as AbiItem[], contractAddress); - } - - async deployJsonAbi() { - const deployOptions = { - data: SablierJson.bytecode, - arguments: [] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async addPauser(account: string) { - return this.sendTx(this.contract.methods.addPauser(account)); - } - - async fee() { - return fromDecimals(await this.callTx(this.contract.methods.fee())); - } - - async initialize(sender: string) { - return this.sendTx(this.contract.methods.initialize(sender)); - } - - async isPauser(account: string) { - return this.callTx(this.contract.methods.isPauser(account)); - } - - async nextStreamId() { - return this.callTx(this.contract.methods.nextStreamId()); - } - - async owner() { - return this.callTx(this.contract.methods.owner()); - } - - async pause() { - return this.sendTx(this.contract.methods.pause()); - } - - async paused() { - return this.callTx(this.contract.methods.paused()); - } - - async transferOwnership(newOwner: string) { - return this.sendTx(this.contract.methods.transferOwnership(newOwner)); - } - - async unpause() { - return this.sendTx(this.contract.methods.unpause()); - } - - async updateFee(feePercentage: number) { - return this.sendTx(this.contract.methods.updateFee(feePercentage)); - } - - async takeEarnings(tokenAddress: string, amount: number) { - const decimals = await this.callTx(this.contract.methods.getTokenDecimals(tokenAddress)) - return this.sendTx(this.contract.methods.takeEarnings(tokenAddress, - toSmartContractDecimals(amount, decimals))); - } - - async getStream(streamId: number) { - return sablierStream(await this.callTx(this.contract.methods.getStream(streamId))); - } - - async deltaOf(streamId: number) { - return this.callTx(this.contract.methods.deltaOf(streamId)); - } - - async balanceOf(streamId: number, who: string) { - return fromDecimals(await this.callTx(this.contract.methods.balanceOf(streamId, who)), - await this.getTokenDecimalsFromStream(streamId)); - } - - async isCompoundingStream(streamId: number) { - return this.callTx(this.contract.methods.isCompoundingStream(streamId)); - } - - async getCompoundingStream(streamId: number) { - return sablierCompoundingStream(await this.callTx(this.contract.methods.getCompoundingStream(streamId)), - await this.getTokenDecimalsFromStream(streamId)); - } - - async interestOf(streamId: number, amount: number) { - return sablierInterest(await this.callTx(this.contract.methods.interestOf(streamId, amount)), - await this.getTokenDecimalsFromStream(streamId)); - } - - async getEarnings(tokenAddress: string) { - return fromDecimals(await this.callTx(this.contract.methods.getEarnings(tokenAddress)), - await this.getTokenDecimals(tokenAddress)); - } - - async createStream(recipient: string, - deposit: string | number, - tokenAddress: string, - startTime: number, - stopTime: number) { - deposit = toSmartContractDecimals(deposit, await this.getTokenDecimals(tokenAddress)); - return this.sendTx(this.contract.methods.createStream(recipient, deposit, tokenAddress, startTime, stopTime)); - } - - async createCompoundingStream(recipient: string, - deposit: string | number, - tokenAddress: string, - startTime: number, - stopTime: number, - senderSharePercentage: number, - recipientSharePercentage: number) { - deposit = toSmartContractDecimals(deposit, await this.getTokenDecimals(tokenAddress)); - return this.sendTx(this.contract - .methods - .createCompoundingStream(recipient, - deposit, - tokenAddress, - startTime, - stopTime, - senderSharePercentage, - recipientSharePercentage)); - } - - async withdrawFromStream(streamId: number, amount: string | number) { - amount = toSmartContractDecimals(amount, await this.getTokenDecimalsFromStream(streamId)); - return this.sendTx(this.contract.methods.withdrawFromStream(streamId, amount)); - } - - async cancelStream(streamId: number) { - return this.sendTx(this.contract.methods.cancelStream(streamId)); - } - - async getTokenDecimalsFromStream(streamId: number) { - return this.callTx(this.contract.methods.getTokenDecimalsFromStream(streamId)); - } - - async getTokenDecimals(tokenAddress: string) { - return this.callTx(this.contract.methods.getTokenDecimals(tokenAddress)); - } - -} diff --git a/src/models/staking-contract.ts b/src/models/staking-contract.ts index ee9a7f7e..682bd4a0 100644 --- a/src/models/staking-contract.ts +++ b/src/models/staking-contract.ts @@ -2,34 +2,30 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import StakingContractJson from '@abi/StakingContract.json'; -import {StakingContractMethods} from '@methods/staking-contract'; -import {AbiItem} from 'web3-utils'; -import {ERC20} from '@models/erc20'; -import {ERC721Collectibles} from '@models/erc721-collectibles'; +import {ERC20} from '@models/token/ERC20/erc20'; +import {ERC721Collectibles} from '@models/token/ERC721/erc721-collectibles'; import {fromDecimals, toSmartContractDate, toSmartContractDecimals} from '@utils/numbers'; -import stakingProduct from '@utils/staking-product'; -import {IsOwnable, IsPausable} from '@interfaces/modifiers'; +import stakingProduct from '@utils/models/staking-product'; +import {IsOwnable} from '@interfaces/modifiers'; import {Ownable} from '@base/ownable'; -import {Pausable} from '@base/pausable'; -import stakeSubscription from '@utils/stake-subscription'; +import stakeSubscription from '@utils/models/stake-subscription'; import {Errors} from '@interfaces/error-enum'; import {nativeZeroAddress} from '@utils/constants'; +import artifact from "@interfaces/generated/abi/StakingContract"; +import {ContractConstructorArgs} from "web3-types/lib/types"; -export class StakingContract extends Model implements Deployable, IsOwnable, IsPausable { +export class StakingContract extends Model implements Deployable, IsOwnable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string, readonly stakeTokenAddress?: string, readonly collectiblesAddress?: string) { - super(web3Connection, StakingContractJson.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } - private _pausable!: Pausable; private _ownable!: Ownable; private _erc20!: ERC20; private _erc721!: ERC721Collectibles; - get pausable() { return this._pausable } get ownable() { return this._ownable } get erc20() { return this._erc20; } get erc721() { return this._erc721; } @@ -39,8 +35,7 @@ export class StakingContract extends Model implements De if (!this.contract) return; - this._ownable = new Ownable(this); - this._pausable = new Pausable(this); + this._ownable = new Ownable(this.connection, this.contractAddress); const tokenAddress = this.stakeTokenAddress || await this.callTx(this.contract.methods.erc20()); @@ -63,8 +58,8 @@ export class StakingContract extends Model implements De async deployJsonAbi(stakeTokenAddress: string, collectiblesAddress = nativeZeroAddress) { const deployOptions = { - data: StakingContractJson.bytecode, - arguments: [stakeTokenAddress, collectiblesAddress] + data: artifact.bytecode, + arguments: [stakeTokenAddress, collectiblesAddress] as ContractConstructorArgs }; return this.deploy(deployOptions, this.connection.Account); @@ -91,7 +86,6 @@ export class StakingContract extends Model implements De } async subscribeProduct(_product_id: number, _amount: string | number) { - await this.pausable.whenNotPaused(); if (!(await this.erc20.isApproved(this.contractAddress, _amount))) throw new Error(Errors.InteractionIsNotAvailableCallApprove); @@ -133,11 +127,11 @@ export class StakingContract extends Model implements De } async getProductIds() { - return (await this.callTx(this.contract.methods.getProductIds())).map(id => +id); + return (await this.callTx(this.contract.methods.getProductIds())).map(id => Number(id)); } async getMySubscriptions(_address: string) { - const subscriptions = await this.callTx(this.contract.methods.getMySubscriptions(_address)); + const subscriptions = await this.callTx(this.contract.methods.getMySubscriptions(_address)); return subscriptions.map(subscription => fromDecimals(subscription, this.erc20.decimals)) } @@ -159,7 +153,7 @@ export class StakingContract extends Model implements De } async depositAPRTokens(amount: string | number) { - return this.erc20.transferTokenAmount(this.contractAddress!, amount); + return this.erc20.transfer(this.contractAddress!, amount); } async getAllProducts() { diff --git a/src/models/swap-router.ts b/src/models/swap-router.ts deleted file mode 100644 index fc508379..00000000 --- a/src/models/swap-router.ts +++ /dev/null @@ -1,49 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import ISwapRouterJson from '@abi/ISwapRouter.json'; -import {SwapRouterMethods} from '@methods/swap-router'; -import {AbiItem} from 'web3-utils'; -import { - ExactInputParams, - ExactInputSingleParams, - ExactOutputParams, - ExactOutputSingleParams -} from '@interfaces/swap-router'; - -export class SwapRouter extends Model implements Deployable { - constructor(web3Connection: Web3Connection | Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ISwapRouterJson.abi as AbiItem[], contractAddress); - } - - async deployJsonAbi() { - const deployOptions = { - data: ISwapRouterJson.bytecode, - arguments: [] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async uniswapV3SwapCallback(amount0Delta: number, amount1Delta: number, data: string) { - return this.sendTx(this.contract.methods.uniswapV3SwapCallback(amount0Delta, amount1Delta, data)); - } - - async exactInputSingle(params: ExactInputSingleParams) { - return this.sendTx(this.contract.methods.exactInputSingle(params)); - } - - async exactInput(params: ExactInputParams) { - return this.sendTx(this.contract.methods.exactInput(params)); - } - - async exactOutputSingle(params: ExactOutputSingleParams) { - return this.sendTx(this.contract.methods.exactOutputSingle(params)); - } - - async exactOutput(params: ExactOutputParams) { - return this.callTx(this.contract.methods.exactOutput(params)); - } - -} diff --git a/src/models/erc1155-standard.ts b/src/models/token/ERC1155/erc1155-ownable.ts similarity index 67% rename from src/models/erc1155-standard.ts rename to src/models/token/ERC1155/erc1155-ownable.ts index 4000827a..a5b756fe 100644 --- a/src/models/erc1155-standard.ts +++ b/src/models/token/ERC1155/erc1155-ownable.ts @@ -2,22 +2,19 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import {XEvents} from '@events/x-events'; -import ERC1155StandardJson from '@abi/ERC1155Standard.json'; -import {ERC1155StandardMethods} from '@methods/erc1155-standard'; -import * as Events from '@events/erc1155-standard-events'; -import {PastEventOptions} from 'web3-eth-contract'; -import {AbiItem} from 'web3-utils'; - -export class ERC1155Standard extends Model implements Deployable { +import artifact from "@interfaces/generated/abi/ERC1155Ownable"; +import {ContractConstructorArgs} from "web3-types/lib/types"; +import {Filter} from "web3"; + +export class ERC1155Ownable extends Model implements Deployable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ERC1155StandardJson.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } async deployJsonAbi(uri: string) { const deployOptions = { - data: ERC1155StandardJson.bytecode, - arguments: [uri] + data: artifact.bytecode, + arguments: [uri] as ContractConstructorArgs }; return this.deploy(deployOptions, this.connection.Account); @@ -28,7 +25,7 @@ export class ERC1155Standard extends Model implements De } async balanceOfBatch(accounts: string[], ids: number[]){ - return (await this.callTx(this.contract.methods.balanceOfBatch(accounts, ids))) + return (await this.callTx(this.contract.methods.balanceOfBatch(accounts, ids))) .map((balance) => Number(balance)); } @@ -36,6 +33,10 @@ export class ERC1155Standard extends Model implements De return this.callTx(this.contract.methods.isApprovedForAll(account, operator)); } + async owner(){ + return this.callTx(this.contract.methods.owner()); + } + async safeBatchTransferFrom(from: string, to: string, ids: number[], amounts: number[], data: string){ return this.sendTx(this.contract.methods.safeBatchTransferFrom(from, to, ids, amounts, data)); } @@ -52,8 +53,12 @@ export class ERC1155Standard extends Model implements De return this.callTx(this.contract.methods.supportsInterface(interfaceId)); } + async transferOwnership(newOwner: string){ + return this.sendTx(this.contract.methods.transferOwnership(newOwner)); + } + async uri(v1: number){ - return this.callTx(this.contract.methods.uri(v1)); + return this.contract.methods.uri(v1).call(); } async setURI(uri: string){ @@ -68,20 +73,23 @@ export class ERC1155Standard extends Model implements De return this.sendTx(this.contract.methods.mintBatch(to, tokenIds, amounts, data)); } - async getApprovalForAllEvents(filter: PastEventOptions): Promise[]> { + async getApprovalForAllEvents(filter: Filter) { return this.contract.self.getPastEvents(`ApprovalForAll`, filter) } - async getTransferBatchEvents(filter: PastEventOptions): Promise[]> { + async getOwnershipTransferredEvents(filter: Filter) { + return this.contract.self.getPastEvents(`OwnershipTransferred`, filter) + } + + async getTransferBatchEvents(filter: Filter) { return this.contract.self.getPastEvents(`TransferBatch`, filter) } - async getTransferSingleEvents(filter: PastEventOptions): Promise[]> { + async getTransferSingleEvents(filter: Filter) { return this.contract.self.getPastEvents(`TransferSingle`, filter) } - async getURIEvents(filter: PastEventOptions): Promise[]> { + async getURIEvents(filter: Filter) { return this.contract.self.getPastEvents(`URI`, filter) } - -} \ No newline at end of file +} diff --git a/src/models/erc20-distribution.ts b/src/models/token/ERC20/erc20-distribution.ts similarity index 78% rename from src/models/erc20-distribution.ts rename to src/models/token/ERC20/erc20-distribution.ts index 83a9c0c6..ac627433 100644 --- a/src/models/erc20-distribution.ts +++ b/src/models/token/ERC20/erc20-distribution.ts @@ -2,35 +2,30 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import ERC20DistributionJson from '@abi/ERC20Distribution.json'; -import {ERC20DistributionMethods} from '@methods/erc20-distribution'; -import {AbiItem} from 'web3-utils'; -import {IsOwnable, IsPausable} from '@interfaces/modifiers'; -import {ERC20} from '@models/erc20'; -import {Pausable} from '@base/pausable'; +import {IsOwnable} from '@interfaces/modifiers'; +import {ERC20} from '@models/token/ERC20/erc20'; import {Ownable} from '@base/ownable'; import {toSmartContractDate, toSmartContractDecimals} from '@utils/numbers'; +import artifact from "@interfaces/generated/abi/ERC20Distribution"; +import {ContractConstructorArgs} from "web3-types/lib/types"; -export class ERC20Distribution extends Model implements Deployable, IsOwnable, IsPausable { +export class ERC20Distribution extends Model implements Deployable, IsOwnable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ERC20DistributionJson.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } private _erc20!: ERC20; get erc20() { return this._erc20; } - private _pausable!: Pausable; private _ownable!: Ownable; - get pausable() { return this._pausable } get ownable() { return this._ownable } async start() { await super.start(); if (this.contract) { - this._ownable = new Ownable(this); - this._pausable = new Pausable(this); + this._ownable = new Ownable(this.connection, this.contractAddress); this._erc20 = new ERC20(this.connection, await this.callTx(this.contract.methods.erc20())); await this._erc20.start(); @@ -39,8 +34,8 @@ export class ERC20Distribution extends Model implement async deployJsonAbi() { const deployOptions = { - data: ERC20DistributionJson.bytecode, - arguments: [] + data: artifact.bytecode, + arguments: [] as ContractConstructorArgs }; return this.deploy(deployOptions, this.connection.Account); diff --git a/src/models/erc20-token-lock.ts b/src/models/token/ERC20/erc20-token-lock.ts similarity index 77% rename from src/models/erc20-token-lock.ts rename to src/models/token/ERC20/erc20-token-lock.ts index 0d5ccb24..63a76317 100644 --- a/src/models/erc20-token-lock.ts +++ b/src/models/token/ERC20/erc20-token-lock.ts @@ -1,28 +1,26 @@ import {Model} from '@base/model'; -import {ERC20TokenLockMethods} from '@methods/erc20-token-lock'; import {Deployable} from '@interfaces/deployable'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import ERC20TokenLock from '@abi/ERC20TokenLock.json'; -import {AbiItem} from 'web3-utils'; + import {Errors} from '@interfaces/error-enum'; -import {ERC20} from '@models/erc20'; +import {ERC20} from '@models/token/ERC20/erc20'; import {fromDecimals, toSmartContractDate, toSmartContractDecimals} from '@utils/numbers'; -import {lockedTokensInfo} from '@utils/locked-tokens-info'; -import {Pausable} from '@base/pausable'; +import {lockedTokensInfo} from '@utils/models/locked-tokens-info'; import {Ownable} from '@base/ownable'; -import {IsOwnable, IsPausable} from '@interfaces/modifiers'; +import {IsOwnable} from '@interfaces/modifiers'; +import artifact from "@interfaces/generated/abi/ERC20TokenLock"; +import {ContractConstructorArgs} from "web3-types/lib/types"; + -export class Erc20TokenLock extends Model implements Deployable, IsOwnable, IsPausable { +export class Erc20TokenLock extends Model implements Deployable, IsOwnable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ERC20TokenLock.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } private _erc20!: ERC20; - private _pausable!: Pausable; private _ownable!: Ownable; - get pausable() { return this._pausable } get ownable() { return this._ownable } get erc20() { return this._erc20; } @@ -35,7 +33,8 @@ export class Erc20TokenLock extends Model implements Depl } async getERC20TokenAddress() { - return this.callTx(this.contract.methods.erc20()); + return this.contract.methods.erc20().call() + //return this.callTx(this.contract.methods.erc20()); } async totalAmountStaked() { @@ -71,7 +70,6 @@ export class Erc20TokenLock extends Model implements Depl } async lock(amount: string | number, endDate: number) { - await this.pausable.whenNotPaused(); if (amount > (await this.getMaxLock()) || amount < (await this.getMinLock())) throw new Error(Errors.InvalidTokenAmount); @@ -93,10 +91,9 @@ export class Erc20TokenLock extends Model implements Depl await super.start(); if (this.contract) { - this._ownable = new Ownable(this); - this._pausable = new Pausable(this); + this._ownable = new Ownable(this.connection, this.contractAddress); - this._erc20 = new ERC20(this.connection, await this.getERC20TokenAddress()); + this._erc20 = new ERC20(this.connection, (await this.getERC20TokenAddress()) as string); await this._erc20.start(); } } @@ -106,8 +103,8 @@ export class Erc20TokenLock extends Model implements Depl throw new Error(Errors.MissingTokenAddress); const options = { - data: ERC20TokenLock.bytecode, - arguments: [erc20ContractAddress || this.erc20.contractAddress] + data: artifact.bytecode, + arguments: [erc20ContractAddress || this.erc20.contractAddress] as ContractConstructorArgs } return this.deploy(options, this.connection.Account); diff --git a/src/models/erc20.ts b/src/models/token/ERC20/erc20.ts similarity index 83% rename from src/models/erc20.ts rename to src/models/token/ERC20/erc20.ts index 6a8ce529..7b958f66 100644 --- a/src/models/erc20.ts +++ b/src/models/token/ERC20/erc20.ts @@ -1,16 +1,16 @@ -import * as Json from '@abi/Token.json'; import {Web3Connection} from '@base/web3-connection'; import {Model} from '@base/model'; import {TransactionReceipt} from '@interfaces/web3-core'; import {fromDecimals, fromSmartContractDecimals, toSmartContractDecimals} from '@utils/numbers'; import {Deployable} from '@interfaces/deployable'; -import {ERC20Methods} from '@methods/erc20'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Ownable} from "@base/ownable"; +import artifact from "@interfaces/generated/abi/ERC20Ownable" +import {ContractConstructorArgs} from "web3-types/lib/types"; -export class ERC20 extends Model implements Deployable { +export class ERC20 extends Model implements Deployable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, Json.abi as any, contractAddress); + super(web3Connection, artifact.abi, contractAddress); } private _decimals = 0; @@ -23,8 +23,8 @@ export class ERC20 extends Model implements Deployable { await super.start(); if (this.contractAddress) { - this._ownable = new Ownable(this); - this._decimals = await this.callTx(this.contract.methods.decimals()) || 18; + this._ownable = new Ownable(this.connection, this.contractAddress); + this._decimals = Number(await this.callTx(this.contract.methods.decimals())) || 18; } } @@ -91,11 +91,11 @@ export class ERC20 extends Model implements Deployable { async deployJsonAbi(name: string, symbol: string, - cap: string | number, - distributionAddress: string): Promise { + initialSupply: string, + decimals = 18): Promise { const deployOptions = { - data: Json.bytecode, - arguments: [name, symbol, cap, distributionAddress] + data: artifact.bytecode, + arguments: [name, symbol, decimals, initialSupply] as ContractConstructorArgs } return this.deploy(deployOptions, this.connection.Account); diff --git a/src/models/erc4626.ts b/src/models/token/ERC4626/erc4626.ts similarity index 79% rename from src/models/erc4626.ts rename to src/models/token/ERC4626/erc4626.ts index 40f4c48d..9d8ef6cf 100644 --- a/src/models/erc4626.ts +++ b/src/models/token/ERC4626/erc4626.ts @@ -3,30 +3,28 @@ import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import ERC4626Json from '@abi/ERC4626.json'; -import { ERC4626Methods } from '@methods/erc4626'; -import * as Events from '@events/erc4626' -import {PastEventOptions} from 'web3-eth-contract'; -import {AbiItem} from 'web3-utils'; -import {XPromiseEvent} from "@events/x-events"; -import {ERC20} from "@models/erc20"; +import {ERC20} from "@models/token/ERC20/erc20"; import {fromSmartContractDecimals, toSmartContractDecimals} from "@utils/numbers"; -export class ERC4626 extends Model implements Deployable { +import artifact from "@interfaces/generated/abi/ERC4626"; +import {ContractConstructorArgs} from "web3-types/lib/types"; +import {Filter} from "web3"; + +export class ERC4626 extends Model implements Deployable { private _decimals = -1; private _asset: ERC20|null = null; constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ERC4626Json.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } async deployJsonAbi(erc20Address: string, name: string, symbol: string) { const deployOptions = { - data: ERC4626Json.bytecode, + data: artifact.bytecode, arguments: [ erc20Address, name, symbol, - ] + ] as ContractConstructorArgs } return this.deploy(deployOptions, this.connection.Account); } @@ -43,7 +41,7 @@ export class ERC4626 extends Model implements Deployable { } async allowance(owner: string, spender: string) { - return this.callTx(this.contract.methods.allowance(owner, spender)) + return this.callTx(this.contract.methods.allowance(owner, spender)) .then(value => fromSmartContractDecimals(value, this._decimals)) } @@ -53,7 +51,7 @@ export class ERC4626 extends Model implements Deployable { async balanceOf(account: string) { return fromSmartContractDecimals(await this.callTx(this.contract - .methods.balanceOf(account)), this._decimals, 3); + .methods.balanceOf(account)), this._decimals); } async decreaseAllowance(spender: string, subtractedValue: number) { @@ -74,7 +72,7 @@ export class ERC4626 extends Model implements Deployable { } async totalSupply() { - return fromSmartContractDecimals(await this.callTx(this.contract.methods.totalSupply()), this._decimals, 3); + return fromSmartContractDecimals(await this.callTx(this.contract.methods.totalSupply()), this._decimals); } async transfer(recipient: string, amount: number) { @@ -90,17 +88,17 @@ export class ERC4626 extends Model implements Deployable { if (this._decimals > -1) return this._decimals; - return this.callTx(this.contract.methods.decimals()); + return Number(await this.callTx(this.contract.methods.decimals())); } get asset() { return this._asset; } async assetAddress() { - return this.callTx(this.contract.methods.asset()); + return this.callTx(this.contract.methods.asset()); } async totalAssets() { - return fromSmartContractDecimals(await this.callTx(this.contract.methods.totalAssets()), this._decimals, 3); + return fromSmartContractDecimals(await this.callTx(this.contract.methods.totalAssets()), this._decimals); } async convertToShares(assets: number) { @@ -150,7 +148,7 @@ export class ERC4626 extends Model implements Deployable { .previewRedeem(toSmartContractDecimals(shares, this._decimals, 3))), this.asset?.decimals, 3); } - async previewWithdraw(assets: number) { + async previewWithdraw(assets: number|string) { return fromSmartContractDecimals(await this.callTx(this.contract .methods .previewWithdraw(toSmartContractDecimals(assets, this.asset?.decimals, 2))), this._decimals, 2); @@ -165,29 +163,29 @@ export class ERC4626 extends Model implements Deployable { return this.sendTx(this.contract.methods.mint(toSmartContractDecimals(shares, this._decimals, 3), receiver)); } - async withdraw(assets: number, receiver: string, owner: string) { + async withdraw(assets: number|string, receiver: string, owner: string) { return this.sendTx(this.contract .methods.withdraw(toSmartContractDecimals(assets, this.asset?.decimals, 3), receiver, owner)); } - async redeem(shares: number, receiver: string, owner: string) { + async redeem(shares: number|string, receiver: string, owner: string) { return this.sendTx(this.contract .methods.redeem(toSmartContractDecimals(shares, this._decimals, 3), receiver, owner)); } - async getApprovalEvents(filter: PastEventOptions): XPromiseEvent { + async getApprovalEvents(filter: Filter) { return this.contract.self.getPastEvents('Approval', filter); } - async getDepositEvents(filter: PastEventOptions): XPromiseEvent { + async getDepositEvents(filter: Filter) { return this.contract.self.getPastEvents('Deposit', filter); } - async getTransferEvents(filter: PastEventOptions): XPromiseEvent { + async getTransferEvents(filter: Filter) { return this.contract.self.getPastEvents('Transfer', filter); } - async getWithdrawEvents(filter: PastEventOptions): XPromiseEvent { + async getWithdrawEvents(filter: Filter) { return this.contract.self.getPastEvents('Withdraw', filter); } diff --git a/src/models/erc721-collectibles.ts b/src/models/token/ERC721/erc721-collectibles.ts similarity index 88% rename from src/models/erc721-collectibles.ts rename to src/models/token/ERC721/erc721-collectibles.ts index c476f8a4..325a7d79 100644 --- a/src/models/erc721-collectibles.ts +++ b/src/models/token/ERC721/erc721-collectibles.ts @@ -2,17 +2,16 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import ERC721CollectiblesJson from '@abi/ERC721Collectibles.json'; -import {ERC721CollectiblesMethods} from '@methods/erc721-collectibles'; -import {AbiItem} from 'web3-utils'; -import {ERC20} from '@models/erc20'; +import {ERC20} from '@models/token/ERC20/erc20'; import {fromDecimals, toSmartContractDecimals,} from '@utils/numbers'; +import artifact from "@interfaces/generated/abi/ERC721Collectibles"; +import {ContractConstructorArgs} from "web3-types/lib/types"; -export class ERC721Collectibles extends Model implements Deployable { +export class ERC721Collectibles extends Model implements Deployable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string, readonly _purchaseToken?: string) { - super(web3Connection, ERC721CollectiblesJson.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } private _erc20!: ERC20; @@ -40,8 +39,9 @@ export class ERC721Collectibles extends Model impleme feeAddress: string, otherAddress: string) { const deployOptions = { - data: ERC721CollectiblesJson.bytecode, - arguments: [name, symbol, limitedAmount, _purchaseToken, baseFeeAddress, feeAddress, otherAddress] + data: artifact.bytecode, + // eslint-disable-next-line max-len + arguments: [name, symbol, limitedAmount, _purchaseToken, baseFeeAddress, feeAddress, otherAddress] as ContractConstructorArgs }; return this.deploy(deployOptions, this.connection.Account); @@ -64,7 +64,7 @@ export class ERC721Collectibles extends Model impleme } async _currentTokenId() { - return +(await this.callTx(this.contract.methods._currentTokenId())) + return Number(await this.callTx(this.contract.methods._currentTokenId())) } async _feeAddress() { @@ -92,7 +92,7 @@ export class ERC721Collectibles extends Model impleme } async openedPacks() { - return +(await this.callTx(this.contract.methods._openedPacks())); + return Number(await this.callTx(this.contract.methods._openedPacks())); } async pricePerPack() { @@ -159,7 +159,7 @@ export class ERC721Collectibles extends Model impleme return this.callTx(this.contract.methods.registeredIDsArray(v1, v2)); } - async safeTransferFrom(from: string, to: string, tokenId: number, _data?: string) { + async safeTransferFrom(from: string, to: string, tokenId: number, _data = "0x0") { return this.sendTx(this.contract.methods.safeTransferFrom(from, to, tokenId, _data)); } @@ -225,7 +225,7 @@ export class ERC721Collectibles extends Model impleme } async exists(tokenId: number) { - return this.callTx(this.contract.methods.exists(tokenId)); + return this.callTx(this.contract.methods.ownerOf(tokenId.toString())); } async setTokenURI(tokenId: number, uri: string) { @@ -245,7 +245,7 @@ export class ERC721Collectibles extends Model impleme } async getRegisteredIDs(_address: string) { - return (await this.callTx(this.contract.methods.getRegisteredIDs(_address)))?.map(id => +id); + return (await this.callTx(this.contract.methods.getRegisteredIDs(_address)))?.map(id => Number(id)); } } diff --git a/src/models/erc721-standard.ts b/src/models/token/ERC721/erc721-standard.ts similarity index 88% rename from src/models/erc721-standard.ts rename to src/models/token/ERC721/erc721-standard.ts index 75f0ab4d..ae361ed0 100644 --- a/src/models/erc721-standard.ts +++ b/src/models/token/ERC721/erc721-standard.ts @@ -1,16 +1,17 @@ import {Model} from '@base/model'; -import {ERC721StandardMethods} from '@methods/erc721-standard'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import ERC721Standard from '@abi/ERC721Standard.json'; -import {AbiItem} from 'web3-utils'; + + import {Deployable} from '@interfaces/deployable'; import {TransactionReceipt} from "@interfaces/web3-core"; +import artifact from "@interfaces/generated/abi/ERC721Standard"; +import {ContractConstructorArgs} from "web3-types/lib/types"; -export class Erc721Standard extends Model implements Deployable { +export class Erc721Standard extends Model implements Deployable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, ERC721Standard.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } async exists(tokenId: number) { @@ -95,8 +96,8 @@ export class Erc721Standard extends Model implements Depl async deployJsonAbi(name: string, symbol: string) { const options = { - data: ERC721Standard.bytecode, - arguments: [name, symbol] + data: artifact.bytecode, + arguments: [name, symbol] as ContractConstructorArgs } return this.deploy(options, this.connection.Account); diff --git a/src/models/uniswap-v3-factory.ts b/src/models/uniswap-v3-factory.ts deleted file mode 100644 index dd5021b1..00000000 --- a/src/models/uniswap-v3-factory.ts +++ /dev/null @@ -1,47 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import IUniswapV3FactoryJson from '@abi/IUniswapV3Factory.json'; -import {UniswapV3FactoryMethods} from '@methods/uniswap-v3-factory'; -import {AbiItem} from 'web3-utils'; - -export class UniswapV3Factory extends Model implements Deployable { - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, IUniswapV3FactoryJson.abi as AbiItem[], contractAddress); - } - - async deployJsonAbi() { - const deployOptions = { - data: IUniswapV3FactoryJson.bytecode, - arguments: [] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async owner() { - return this.callTx(this.contract.methods.owner()); - } - - async feeAmountTickSpacing(fee: number) { - return this.callTx(this.contract.methods.feeAmountTickSpacing(fee)); - } - - async getPool(tokenA: string, tokenB: string, fee: number) { - return this.callTx(this.contract.methods.getPool(tokenA, tokenB, fee)); - } - - async createPool(tokenA: string, tokenB: string, fee: number) { - return this.callTx(this.contract.methods.createPool(tokenA, tokenB, fee)); - } - - async setOwner(_owner: string) { - return this.sendTx(this.contract.methods.setOwner(_owner)); - } - - async enableFeeAmount(fee: number, tickSpacing: number) { - return this.sendTx(this.contract.methods.enableFeeAmount(fee, tickSpacing)); - } - -} diff --git a/src/models/uniswap-v3-router-bridge.ts b/src/models/uniswap-v3-router-bridge.ts deleted file mode 100644 index 314b7705..00000000 --- a/src/models/uniswap-v3-router-bridge.ts +++ /dev/null @@ -1,45 +0,0 @@ -import {Model} from '@base/model'; -import {Web3Connection} from '@base/web3-connection'; -import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; -import {Deployable} from '@interfaces/deployable'; -import TestUniswapV3RouterBridgeJson from '@abi/TestUniswapV3RouterBridge.json'; -import {UniswapV3RouterBridgeMethods} from '@methods/uniswap-v3-router-bridge'; -import {AbiItem} from 'web3-utils'; - -export class UniswapV3RouterBridge extends Model implements Deployable { - constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string) { - super(web3Connection, TestUniswapV3RouterBridgeJson.abi as AbiItem[], contractAddress); - } - - async deployJsonAbi(_swapRouter: string) { - const deployOptions = { - data: TestUniswapV3RouterBridgeJson.bytecode, - arguments: [_swapRouter] - }; - - return this.deploy(deployOptions, this.connection.Account); - } - - async swapRouter() { - return this.callTx(this.contract.methods.swapRouter()); - } - - async swapExactInputSingleEx(tokenIn: string, - tokenOut: string, - poolFee: undefined, - amountIn: number, - amountOutMinimum: number) { - return this.callTx(this.contract - .methods.swapExactInputSingleEx(tokenIn, tokenOut, poolFee, amountIn, amountOutMinimum)); - } - - async swapExactOutputSingleEx(tokenIn: string, - tokenOut: string, - poolFee: undefined, - amountOut: number, - amountInMaximum: number) { - return this.callTx(this.contract - .methods.swapExactOutputSingleEx(tokenIn, tokenOut, poolFee, amountOut, amountInMaximum)); - } - -} diff --git a/src/models/votable.ts b/src/models/votable.ts index 96455f48..226e60b8 100644 --- a/src/models/votable.ts +++ b/src/models/votable.ts @@ -2,20 +2,19 @@ import {Model} from '@base/model'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Deployable} from '@interfaces/deployable'; -import VotableJson from '@abi/Votable.json'; -import {VotableMethods} from '@methods/votable'; -import {AbiItem} from 'web3-utils'; -import {ERC20} from '@models/erc20'; +import {ERC20} from '@models/token/ERC20/erc20'; import {fromDecimals, toSmartContractDecimals} from '@utils/numbers'; -import voterInfo from '@utils/voter-info'; -import votingPollWinner from '@utils/voting-poll-winner'; -import poolInformation from '@utils/pool-information'; +import voterInfo from '@utils/models/voter-info'; +import votingPollWinner from '@utils/models/voting-poll-winner'; +import poolInformation from '@utils/models/pool-information'; +import artifact from "@interfaces/generated/abi/Votable"; +import {ContractConstructorArgs} from "web3-types/lib/types"; -export class Votable extends Model implements Deployable { +export class Votable extends Model implements Deployable { constructor(web3Connection: Web3Connection|Web3ConnectionOptions, contractAddress?: string, readonly erc20TokenAddress?: string) { - super(web3Connection, VotableJson.abi as AbiItem[], contractAddress); + super(web3Connection, artifact.abi, contractAddress); } private _erc20!: ERC20; @@ -36,8 +35,8 @@ export class Votable extends Model implements Deployable { async deployJsonAbi(_token: string) { const deployOptions = { - data: VotableJson.bytecode, - arguments: [_token] + data: artifact.bytecode, + arguments: [_token] as ContractConstructorArgs }; return this.deploy(deployOptions, this.connection.Account); diff --git a/src/utils/allowed-tokens.ts b/src/utils/allowed-tokens.ts deleted file mode 100644 index 01b21ffa..00000000 --- a/src/utils/allowed-tokens.ts +++ /dev/null @@ -1,8 +0,0 @@ -interface Params { - transactional: string[], - reward: string[], -} - -export function allowedTokens({transactional, reward}: Params) { - return {transactional, reward,} -} \ No newline at end of file diff --git a/src/utils/benefactor.ts b/src/utils/benefactor.ts deleted file mode 100644 index 2eb94903..00000000 --- a/src/utils/benefactor.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Benefactor } from "@interfaces/benefactor"; -import { Thousand } from "./constants"; -import { fromDecimals } from "./numbers"; - -export function benefactor({ - benefactor, - amount, - creationDate -} : Benefactor, transactionalTokenDecimals = 18): Benefactor { - return { - benefactor, - amount: fromDecimals(amount, transactionalTokenDecimals), - creationDate: +creationDate * Thousand - }; -} \ No newline at end of file diff --git a/src/utils/block-number-timestamp.ts b/src/utils/block-number-timestamp.ts deleted file mode 100644 index 6838bf12..00000000 --- a/src/utils/block-number-timestamp.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {fromSmartContractDate} from '@utils/numbers'; -import {BlockNumberAndTimestamp} from '@interfaces/block-number-timestamp'; - -interface Params {'0': number; '1': number} - -export default function blockNumberAndTimestamp({0: blockNumber, 1: timestamp}: Params): BlockNumberAndTimestamp { - return { - blockNumber, - timestamp: fromSmartContractDate(timestamp) - } -} diff --git a/src/utils/loophole-pool-info.ts b/src/utils/loophole-pool-info.ts deleted file mode 100644 index 91295909..00000000 --- a/src/utils/loophole-pool-info.ts +++ /dev/null @@ -1,32 +0,0 @@ -import {LoopholePoolInfo} from '@interfaces/loophole-pool-info'; -import {fromDecimals} from '@utils/numbers'; -import Web3 from 'web3'; - -interface Params { - '0': string; - '1': number; - '2': number; - '3': number; - '4': number; - '5': number; - '6': number -} - -export default function lhPoolInfo({0: address, - 1: allocPoint, - 2: lastRewardBlock, - 3: totalPool, - 4: entryStakeTotal, - 5: totalDistributedPenalty, - 6: accLPtokensPerShare}: Params, - decimals = 18, multiplier = 1): LoopholePoolInfo { - return { - address, - allocPoint, - lastRewardBlock, - totalPool: fromDecimals(totalPool, decimals), - entryStakeTotal: fromDecimals(entryStakeTotal, decimals), - totalDistributedPenalty: fromDecimals(totalDistributedPenalty, decimals), - accLPtokensPerShare: Web3.utils.toBN(accLPtokensPerShare).div(Web3.utils.toBN(multiplier)).toNumber() - } -} diff --git a/src/utils/loophole-pool-update.ts b/src/utils/loophole-pool-update.ts deleted file mode 100644 index 45498c80..00000000 --- a/src/utils/loophole-pool-update.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {fromDecimals} from '@utils/numbers'; -import Web3 from 'web3'; -import {LoopholePoolUpdate} from '@interfaces/loophole-pool-update'; - -interface Params { - '0': number; - '1': number; - '2': number -} - -export default function lhPoolUpdate({0: blockNumber, - 1: lpTokensReward, - 2: accLPtokensPerShare}: Params, - decimals = 18, multiplier = 1): LoopholePoolUpdate { - return { - blockNumber, - lpTokensReward: fromDecimals(lpTokensReward, decimals), - accLPtokensPerShare: Web3.utils.toBN(accLPtokensPerShare).div(Web3.utils.toBN(multiplier)).toNumber() - } -} diff --git a/src/utils/loophole-user-info.ts b/src/utils/loophole-user-info.ts deleted file mode 100644 index 24e0da39..00000000 --- a/src/utils/loophole-user-info.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {LoopholeUserInfo} from '@interfaces/loophole-user-info'; - -interface Params { - '0': number; - '1': number; - '2': number; - '3': number; -} - -export default function lhUserInfo({0: entryStake, - 1: unstake, - 2: entryStakeAdjusted, - 3: payRewardMark}: Params): LoopholeUserInfo { - return ({entryStake, unstake, entryStakeAdjusted, payRewardMark}) -} diff --git a/src/utils/models/benefactor.ts b/src/utils/models/benefactor.ts new file mode 100644 index 00000000..060da516 --- /dev/null +++ b/src/utils/models/benefactor.ts @@ -0,0 +1,15 @@ +import { Benefactor } from "@interfaces/bepro/benefactor"; +import { Thousand } from "../constants"; +import { fromDecimals } from "../numbers"; + +export function benefactor({ + benefactor, + amount, + creationDate +} : Benefactor, transactionalTokenDecimals = 18): Benefactor { + return { + benefactor, + amount: Number(fromDecimals(amount, transactionalTokenDecimals)), + creationDate: Number(creationDate) * Thousand + }; +} \ No newline at end of file diff --git a/src/utils/bounty.ts b/src/utils/models/bounty.ts similarity index 53% rename from src/utils/bounty.ts rename to src/utils/models/bounty.ts index dcd64c7e..e3928047 100644 --- a/src/utils/bounty.ts +++ b/src/utils/models/bounty.ts @@ -1,9 +1,9 @@ -import { Bounty } from "@interfaces/bounty"; +import { Bounty } from "@interfaces/bepro/bounty"; import { Thousand } from "@utils/constants"; import { fromDecimals } from "@utils/numbers"; -import { proposal } from "@utils/proposal"; -import { pullRequest } from "@utils/pull-request"; -import { benefactor } from "@utils/benefactor"; +import { proposal } from "@utils/models/proposal"; +import { pullRequest } from "@utils/models/pull-request"; +import { benefactor } from "@utils/models/benefactor"; export function bounty({ creationDate, @@ -18,11 +18,11 @@ export function bounty({ }: Bounty, networkTokenDecimals = 18, transactionalTokenDecimals = 18, rewardTokenDecimals = 18): Bounty { return { ...rest, - creationDate: +creationDate * Thousand, - tokenAmount: fromDecimals(tokenAmount, transactionalTokenDecimals), - rewardAmount: fromDecimals(rewardAmount, rewardTokenDecimals), - fundingAmount: fromDecimals(fundingAmount, transactionalTokenDecimals), - closedDate: +closedDate * Thousand, + creationDate: Number(creationDate) * Thousand, + tokenAmount: Number(fromDecimals(tokenAmount, transactionalTokenDecimals)), + rewardAmount: Number(fromDecimals(rewardAmount, rewardTokenDecimals)), + fundingAmount: Number(fromDecimals(fundingAmount, transactionalTokenDecimals)), + closedDate: Number(closedDate) * Thousand, pullRequests: pullRequests.map(pullRequest), proposals: proposals.map(bountyProposal => proposal(bountyProposal, networkTokenDecimals)), funding: funding.map(bountyBenefactor => benefactor(bountyBenefactor, transactionalTokenDecimals)) diff --git a/src/utils/delegation.ts b/src/utils/models/delegation.ts similarity index 81% rename from src/utils/delegation.ts rename to src/utils/models/delegation.ts index 2563e95f..d9ce3b17 100644 --- a/src/utils/delegation.ts +++ b/src/utils/models/delegation.ts @@ -1,4 +1,4 @@ -import {Delegation} from "@interfaces/delegation"; +import {Delegation} from "@interfaces/bepro/delegation"; import {fromSmartContractDecimals} from "@utils/numbers"; export function delegationEntry({amount, ...rest}: Delegation, index: number, decimals = 18): Delegation { diff --git a/src/utils/locked-tokens-info.ts b/src/utils/models/locked-tokens-info.ts similarity index 80% rename from src/utils/locked-tokens-info.ts rename to src/utils/models/locked-tokens-info.ts index 3dc34187..c014b8e3 100644 --- a/src/utils/locked-tokens-info.ts +++ b/src/utils/models/locked-tokens-info.ts @@ -1,8 +1,7 @@ import {fromDecimals} from '@utils/numbers'; -import {LockedTokensInfo} from '@methods/locked-tokens-info'; interface Params {'0': number; '1': number; '2': number} -export function lockedTokensInfo(tokensInfo: Params, decimals = 18): LockedTokensInfo { +export function lockedTokensInfo(tokensInfo: Params, decimals = 18) { const [startDate, endDate, amount] = Object.values(tokensInfo); return { diff --git a/src/utils/oracles-resume.ts b/src/utils/models/oracles-resume.ts similarity index 75% rename from src/utils/oracles-resume.ts rename to src/utils/models/oracles-resume.ts index 3731af9b..f109004a 100644 --- a/src/utils/oracles-resume.ts +++ b/src/utils/models/oracles-resume.ts @@ -1,6 +1,6 @@ -import { Delegation } from "@interfaces/delegation"; -import { Oracle } from "@interfaces/oracle"; -import { OraclesResume } from "@interfaces/oracles-resume"; +import { Delegation } from "@interfaces/bepro/delegation"; +import { Oracle } from "@interfaces/bepro/oracle"; +import { OraclesResume } from "@interfaces/bepro/oracles-resume"; import { fromSmartContractDecimals } from "@utils/numbers"; diff --git a/src/utils/pool-information.ts b/src/utils/models/pool-information.ts similarity index 100% rename from src/utils/pool-information.ts rename to src/utils/models/pool-information.ts diff --git a/src/utils/proposal-detail.ts b/src/utils/models/proposal-detail.ts similarity index 55% rename from src/utils/proposal-detail.ts rename to src/utils/models/proposal-detail.ts index 9e45dbe4..2ee125c5 100644 --- a/src/utils/proposal-detail.ts +++ b/src/utils/models/proposal-detail.ts @@ -1,4 +1,4 @@ -import { ProposalDetail } from "@interfaces/proposal-detail"; +import { ProposalDetail } from "@interfaces/bepro/proposal-detail"; export function proposalDetail({ recipient, @@ -6,6 +6,6 @@ export function proposalDetail({ } : ProposalDetail): ProposalDetail { return { recipient, - percentage: +percentage + percentage: Number(percentage) }; } \ No newline at end of file diff --git a/src/utils/proposal.ts b/src/utils/models/proposal.ts similarity index 52% rename from src/utils/proposal.ts rename to src/utils/models/proposal.ts index 8fb8b2b9..cbcf2cc1 100644 --- a/src/utils/proposal.ts +++ b/src/utils/models/proposal.ts @@ -1,8 +1,8 @@ -import { Proposal } from "@interfaces/proposal"; +import { Proposal } from "@interfaces/bepro/proposal"; import { Thousand } from "@utils/constants"; import { fromDecimals } from "@utils/numbers"; -import { proposalDetail } from "@utils/proposal-detail"; +import { proposalDetail } from "@utils/models/proposal-detail"; export function proposal({ id, @@ -15,11 +15,11 @@ export function proposal({ details } : Proposal, decimals = 18): Proposal { return { - id: +id, - creationDate: creationDate * Thousand, - oracles: fromDecimals(oracles, decimals), - disputeWeight: fromDecimals(disputeWeight, decimals), - prId: +prId, + id: Number(id), + creationDate: Number(creationDate) * Thousand, + oracles: Number(fromDecimals(oracles, decimals)), + disputeWeight: Number(fromDecimals(disputeWeight, decimals)), + prId: Number(prId), refusedByBountyOwner, creator, details: details.map(proposalDetail) diff --git a/src/utils/pull-request.ts b/src/utils/models/pull-request.ts similarity index 75% rename from src/utils/pull-request.ts rename to src/utils/models/pull-request.ts index 09a9a2e2..43563af7 100644 --- a/src/utils/pull-request.ts +++ b/src/utils/models/pull-request.ts @@ -1,4 +1,4 @@ -import { PullRequest } from "@interfaces/pull-request"; +import { PullRequest } from "@interfaces/bepro/pull-request"; export function pullRequest({ originRepo, @@ -21,7 +21,7 @@ export function pullRequest({ ready, canceled, creator, - cid: +cid, - id: +id + cid: Number(cid), + id: Number(id) }; } \ No newline at end of file diff --git a/src/utils/stake-subscription.ts b/src/utils/models/stake-subscription.ts similarity index 100% rename from src/utils/stake-subscription.ts rename to src/utils/models/stake-subscription.ts diff --git a/src/utils/staking-product.ts b/src/utils/models/staking-product.ts similarity index 100% rename from src/utils/staking-product.ts rename to src/utils/models/staking-product.ts diff --git a/src/utils/models/transaction-handler.ts b/src/utils/models/transaction-handler.ts new file mode 100644 index 00000000..fd3b816d --- /dev/null +++ b/src/utils/models/transaction-handler.ts @@ -0,0 +1,51 @@ +import {TransactionReceipt} from "web3-types"; +import {type Web3PromiEvent} from "web3-core"; + + +type ResolveReject = (_value?: any | unknown) => void; + +export function transactionHandler(transaction: Web3PromiEvent>, + resolve: ResolveReject, + reject: ResolveReject, + debug = false, + confirmations = 1) { + + const logDebug = + (event: string, dbg: any) => + debug ? console.log(`EVENT: ${event}`, dbg) : null; + + if (confirmations === 1) + transaction + .on(`receipt`, (receipt) => { + logDebug("onReceipt (immediate)", receipt); + + if (confirmations === 1) + resolve(receipt); + }); + else + transaction + .on(`confirmation`, ({receipt, confirmations: confirmationNumber}: any) => { + logDebug("onConfirmation", {receipt, confirmationNumber, confirmations}); + + if (confirmationNumber >= confirmations) + resolve(receipt as unknown as TransactionReceipt); + }); + + transaction + .on(`sending`, (r) => { + logDebug("onSending", r); + }) + .on(`sent`, (r) => { + logDebug("onSent", r); + }) + .on(`error`, (err) => { + logDebug("onError", err as Error); + + reject(err) + }) + .catch(err => { + logDebug("Thrown", err as Error); + + reject(err) + }); +} diff --git a/src/utils/treasury-info.ts b/src/utils/models/treasury-info.ts similarity index 100% rename from src/utils/treasury-info.ts rename to src/utils/models/treasury-info.ts diff --git a/src/utils/voter-info.ts b/src/utils/models/voter-info.ts similarity index 100% rename from src/utils/voter-info.ts rename to src/utils/models/voter-info.ts diff --git a/src/utils/voting-poll-winner.ts b/src/utils/models/voting-poll-winner.ts similarity index 100% rename from src/utils/voting-poll-winner.ts rename to src/utils/models/voting-poll-winner.ts diff --git a/src/utils/network-issue.ts b/src/utils/network-issue.ts deleted file mode 100644 index cff98619..00000000 --- a/src/utils/network-issue.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {fromDecimals} from './numbers'; -import {NetworkIssue} from '@interfaces/network-issue'; - -type Params = { - '0': number; '1': string; '2': number; - '3': number; '4': string; '5': number; - '6': boolean; '7': boolean; '8': boolean -} - -export default function networkIssue({'0': _id, '1': cid, '2': creationDate, '3': tokensStaked, '4': issueGenerator, - '5': mergeProposalsAmount, '6': finalized, - '7': canceled, '8': recognizedAsFinished}: Params, - decimals = 18): NetworkIssue { - return { - _id, cid, issueGenerator, finalized, canceled, recognizedAsFinished, - creationDate: creationDate * 1000, - tokensStaked: fromDecimals(tokensStaked, decimals), - mergeProposalAmount: mergeProposalsAmount, - } -} diff --git a/src/utils/network-merge.ts b/src/utils/network-merge.ts deleted file mode 100644 index c321f806..00000000 --- a/src/utils/network-merge.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {fromDecimals} from '@utils/numbers'; -import {NetworkMerge} from '@interfaces/network-merge'; - -interface Params {'0': number; '1': number; '2': number; '3': string[]; '4': number[]; '5': string} -export default function networkMerge({'0': _id, '1': votes, '2': disputes, '3': prAddresses, - '4': prAmounts, '5': proposalAddress}: Params, - decimals = 18): NetworkMerge { - return { - _id: _id.toString(), - votes: fromDecimals(votes, decimals), - disputes: fromDecimals(disputes, decimals), - prAddresses, - prAmounts: prAmounts.map((amount: number) => fromDecimals(amount, decimals)), - proposalAddress, - } -} diff --git a/src/utils/noop.ts b/src/utils/noop.ts deleted file mode 100644 index 8ad49c39..00000000 --- a/src/utils/noop.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable @typescript-eslint/no-empty-function */ -export function noop(..._args: any) {} -/* eslint-enable @typescript-eslint/no-empty-function */ diff --git a/src/utils/numbers.ts b/src/utils/numbers.ts index 5f340782..975d59f0 100644 --- a/src/utils/numbers.ts +++ b/src/utils/numbers.ts @@ -1,8 +1,5 @@ import BigNumber from 'bignumber.js'; -const shiftByFixed = (value: string|number|BigNumber, shiftBy: number, rounding: number|null = null) => - new BigNumber(value).shiftedBy(shiftBy).toFixed(rounding ? 0 : null as any, rounding as any) - /** * convert a simple number into a big number representation, usually used to convert * to ERC20 token correct number @@ -11,8 +8,9 @@ const shiftByFixed = (value: string|number|BigNumber, shiftBy: number, rounding: * @param {number} rounding * @return {string} */ -export function toSmartContractDecimals(value: string|number, decimals = 18, rounding:number|null = null) { - return shiftByFixed(value, +decimals, rounding); +export function toSmartContractDecimals(value: string|number, decimals = 18, + rounding:BigNumber.RoundingMode|undefined = undefined) { + return new BigNumber(value).shiftedBy(+decimals).toFixed(0, rounding) } /** @@ -22,8 +20,13 @@ export function toSmartContractDecimals(value: string|number, decimals = 18, rou * @param {number} rounding * @return {string} */ -export function fromSmartContractDecimals(value: string|number|BigNumber, decimals = 18, rounding: number|null = null) { - return shiftByFixed(value, -(+decimals), rounding); +export function fromSmartContractDecimals(value: string | number | BigNumber | bigint, + decimals = 18, + rounding: BigNumber.RoundingMode|undefined = undefined) { + if (typeof value === "bigint") + value = value as unknown as number; // bigint is accepted by bignumber but typescript says no + + return new BigNumber(value).shiftedBy(-(+decimals)).toFixed(decimals, rounding) } /** @@ -32,7 +35,7 @@ export function fromSmartContractDecimals(value: string|number|BigNumber, decima * @param {number} decimals * @return {string} */ -export function fromDecimals(value: string|number, decimals = 18) { +export function fromDecimals(value: string|number|bigint, decimals = 18) { return fromSmartContractDecimals(value, decimals); } @@ -42,7 +45,7 @@ export function fromDecimals(value: string|number, decimals = 18) { * @return {number} */ export function toSmartContractDate(date: number|Date) { - return parseInt(`${+new Date(date) / 1000}`, 10).toFixed() as any as number; + return parseInt(`${+new Date(date) / 1000}`, 10).toFixed() as unknown as number; } /** @@ -51,5 +54,5 @@ export function toSmartContractDate(date: number|Date) { * @return {Date} */ export function fromSmartContractDate(date: number) { - return +new Date(date*1000); + return +new Date(Number(date)*1000); } diff --git a/src/utils/real-fevr-marketplace-distributions.ts b/src/utils/real-fevr-marketplace-distributions.ts deleted file mode 100644 index 46f97a25..00000000 --- a/src/utils/real-fevr-marketplace-distributions.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {RealFevrMarketplaceDistributions} from '@interfaces/real-fevr-marketplace-distributions'; - -interface Params { - '0': string[]; - '1': string[]; -} - -export default function realFevrMarketplaceDistributions({ - 0: distributionAmounts, - 1: distributionAddresses, -}: Params): RealFevrMarketplaceDistributions { - return { - distributionAmounts: distributionAmounts.map(function(a: string) { return parseInt(a, 10); }), - distributionAddresses, - } -} diff --git a/src/utils/real-fevr-pack.ts b/src/utils/real-fevr-pack.ts deleted file mode 100644 index c4fe6a1d..00000000 --- a/src/utils/real-fevr-pack.ts +++ /dev/null @@ -1,41 +0,0 @@ -import {fromDecimals} from '@utils/numbers'; -import {RealFevrPack} from '@interfaces/real-fevr-pack'; - -interface Params { - '0': number; - '1': number; - '2': number; - '3': string; - '4': string; - '5': string; - '6': string; - '7': string[]; - '8': number[]; - '9': boolean; -} - -export default function realFevrPack({ - 0: packId, - 1: initialNFTID, - 2: price, - 3: serie, - 4: drop, - 5: packType, - 6: buyer, - 7: saleDistributionAddresses, - 8: saleDistributionAmounts, - 9: opened, -}: Params, decimals = 18): RealFevrPack { - return { - packId, - initialNFTID, - price: fromDecimals(price, decimals), - serie, - drop, - packType, - buyer, - saleDistributionAddresses, - saleDistributionAmounts, - opened, - } -} diff --git a/src/utils/sablier-compounding-stream.ts b/src/utils/sablier-compounding-stream.ts deleted file mode 100644 index 2823d08a..00000000 --- a/src/utils/sablier-compounding-stream.ts +++ /dev/null @@ -1,43 +0,0 @@ -import {fromDecimals, fromSmartContractDate,} from '@utils/numbers'; -import {SablierCompoundingStream} from '@interfaces/sablier-compound-stream' - -interface Params { - '0': string; - '1': string; - '2': number; - '3': string; - '4': number; - '5': number; - '6': number; - '7': number; - '8': number; - '9': number; - '10': number -} - - -export default function sablierCompoundingStream({ - 0: sender, - 1: recipient, - 2: deposit, - 3: tokenAddress, - 4: startTime, - 5: stopTime, - 6: remainingBalance, - 7: ratePerSecond, - 8: exchangeRateInitial, - 9: senderSharePercentage, - 10: recipientSharePercentage - }: Params, decimals = 18): SablierCompoundingStream { - return { - sender, recipient, tokenAddress, - deposit: fromDecimals(deposit, decimals), - startTime: fromSmartContractDate(startTime), - stopTime: fromSmartContractDate(stopTime), - remainingBalance: fromDecimals(remainingBalance, decimals), - ratePerSecond: fromDecimals(ratePerSecond, decimals), - exchangeRateInitial: fromDecimals(exchangeRateInitial, decimals), - senderSharePercentage: fromDecimals(senderSharePercentage, decimals), - recipientSharePercentage: fromDecimals(recipientSharePercentage, decimals) - } -} diff --git a/src/utils/sablier-interest.ts b/src/utils/sablier-interest.ts deleted file mode 100644 index ce7ac907..00000000 --- a/src/utils/sablier-interest.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {fromDecimals} from '@utils/numbers'; -import {SablierInterest} from '@interfaces/sablier-interest'; - -interface Params { '0': number; '1': number; '2': number } - -export default function sablierInterest({ - 0: spenderInterest, - 1: recipientInterest, - 2: sablierInterest - }: Params, decimals = 18): SablierInterest { - return { - spenderInterest: fromDecimals(spenderInterest, decimals), - recipientInterest: fromDecimals(recipientInterest, decimals), - sablierInterest: fromDecimals(sablierInterest, decimals) - } -} diff --git a/src/utils/sablier-stream.ts b/src/utils/sablier-stream.ts deleted file mode 100644 index 47ae02f0..00000000 --- a/src/utils/sablier-stream.ts +++ /dev/null @@ -1,34 +0,0 @@ -import {fromDecimals, fromSmartContractDate} from '@utils/numbers'; -import {SablierStream} from '@interfaces/sablier-stream'; - -interface Params { - '0': string; - '1': string; - '2': number; - '3': string; - '4': number; - '5': number; - '6': number; - '7': number -} - - - -export default function sablierStream({ - 0: sender, - 1: recipient, - 2: deposit, - 3: tokenAddress, - 4: startTime, - 5: stopTime, - 6: remainingBalance, - 7: ratePerSecond - }: Params, decimals = 18): SablierStream { - return { - sender, recipient, deposit: fromDecimals(deposit, decimals), tokenAddress, - startTime: fromSmartContractDate(startTime), - stopTime: fromSmartContractDate(stopTime), - remainingBalance: fromDecimals(remainingBalance, decimals), - ratePerSecond: fromDecimals(ratePerSecond, decimals) - } -} diff --git a/src/utils/transaction-handler.ts b/src/utils/transaction-handler.ts deleted file mode 100644 index 7cd5fb39..00000000 --- a/src/utils/transaction-handler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import {PromiEvent, TransactionReceipt} from 'web3-core'; -import {Contract} from 'web3-eth-contract'; - -type ResolveReject = (value?: any | unknown) => void; - -export function transactionHandler(transaction: PromiEvent, - resolve: ResolveReject, - reject: ResolveReject, - debug?: boolean) { - transaction - .on(`receipt`, (receipt) => { - if (debug) - console.log(receipt); - - resolve(receipt as unknown as TransactionReceipt) - }) - .on(`error`, (err) => { - if (debug) - console.error(err); - - reject(err) - }) - .catch(err => { - if (debug) - console.error(err); - - reject(err) - }); -} diff --git a/test/base/ipfs-wrapper.spec.ts b/test/base/ipfs-wrapper.spec.ts deleted file mode 100644 index e071a321..00000000 --- a/test/base/ipfs-wrapper.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -import {IPFSOptions, IPFSWrapper} from '../../src'; -import {expect} from 'chai'; -import {CID} from 'ipfs-http-client'; - -// skipped till we find a free IPFS -describe.skip(`IPFS Wrapper`, () => { - const options: IPFSOptions = { host: 'ipfs.infura.io', port: 5001, protocol: "https"}; - - it(`starts a new wrapper and connects`, () => { - const autoWrapper = new IPFSWrapper({...options, auto: true}); - expect(autoWrapper.IPFS).to.not.be.undefined; - }); - - it(`doesn't start because no auto`, () => { - const autoWrapper = new IPFSWrapper(options); - expect(autoWrapper.IPFS).to.be.undefined; - }); - - describe(`Saves and Retrieves`, () => { - let wrapper!: IPFSWrapper; - let cid: CID; - before(() => { - wrapper = new IPFSWrapper(options); - wrapper.create(); - }); - - it(`Saves`, async () => { - const result = await wrapper.add(`hello world`); - cid = result.cid; - expect(cid).to.not.be.undefined; - }); - - it(`Retrieves`, async () => { - const result = await wrapper.get(cid); - expect(result).to.be.eq(`hello world`); - }); - }) -}) diff --git a/test/base/web3-connection.spec.ts b/test/base/web3-connection.spec.ts index 3fc6fe59..bbd7cacc 100644 --- a/test/base/web3-connection.spec.ts +++ b/test/base/web3-connection.spec.ts @@ -3,7 +3,9 @@ import {expect} from 'chai'; import {Web3Connection} from '@base/web3-connection'; import {Web3ConnectionOptions} from '@interfaces/web3-connection-options'; import {Errors} from '@interfaces/error-enum'; -import {getPrivateKeyFromFile} from '../utils/'; + +import {getPrivateKeyFromFile} from "../utils/get-pvt-k-from-file"; +// import BigNumber from "bignumber.js"; describe(`Web3Connection`, () => { it(`start() fails because missing web3host`, () => { @@ -15,8 +17,8 @@ describe(`Web3Connection`, () => { let web3Connection: Web3Connection; before(() => { const options: Web3ConnectionOptions = { - web3Host: process.env.WEB3_HOST_PROVIDER || 'HTTP://127.0.0.1:8545', - privateKey: process.env.WALLET_PRIVATE_KEY || getPrivateKeyFromFile(), + web3Host: process.env.CI_WEB3_HOST_PROVIDER || 'HTTP://127.0.0.1:8545', + privateKey: getPrivateKeyFromFile(), skipWindowAssignment: true, } @@ -33,7 +35,7 @@ describe(`Web3Connection`, () => { }) it(`gets balance`, async () => { - expect(await web3Connection.getBalance()).to.not.be.empty; + expect((await web3Connection.getBalance()).toString()).to.not.be.empty; }); it(`get ETHNetworkId`, async () => { @@ -48,7 +50,7 @@ describe(`Web3Connection`, () => { const AliceAddress = web3Connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(1))?.address; const balance = await web3Connection.getBalance(AliceAddress); await web3Connection.sendNativeToken(AliceAddress, 1); - expect(await web3Connection.getBalance(AliceAddress)).to.be.eq((+balance+1).toString()) + expect(+(await web3Connection.getBalance(AliceAddress))).to.be.eq(+balance + 1); }) }) }) diff --git a/test/models/base-model.spec.ts b/test/models/base-model.spec.ts index 658fd155..fc6d6389 100644 --- a/test/models/base-model.spec.ts +++ b/test/models/base-model.spec.ts @@ -3,16 +3,17 @@ import {Web3Connection} from '@base/web3-connection'; import {Model} from '@base/model'; import {expect} from 'chai'; import {Errors} from '@interfaces/error-enum'; -import {getPrivateKeyFromFile, hasTxBlockNumber, shouldBeRejected} from '../utils/'; -import erc20 from "../../build/contracts/ERC20.json"; +import {hasTxBlockNumber, shouldBeRejected} from '../utils/'; +import erc20 from "../../src/interfaces/generated/abi/ERC20CappedToken"; import {ERC20} from "../../src"; +import {getPrivateKeyFromFile} from "../utils"; describe(`Model`, () => { let deployedAddress: string; const options: Web3ConnectionOptions = { - web3Host: process.env.WEB3_HOST_PROVIDER || 'HTTP://127.0.0.1:8545', - privateKey: process.env.WALLET_PRIVATE_KEY || getPrivateKeyFromFile(), + web3Host: process.env.CI_WEB3_HOST_PROVIDER || 'HTTP://127.0.0.1:8545', + privateKey: getPrivateKeyFromFile(), skipWindowAssignment: true, autoStart: false, } @@ -34,12 +35,16 @@ describe(`Model`, () => { }); describe(`with autoStart: true`, () => { + let web3Connection: Web3Connection; + before(() => { + web3Connection = new Web3Connection({...options, autoStart: true}); + }) + it(`Starts and loads the ABI automatically and re-assigns`, async () => { - const web3Connection = new Web3Connection({...options, autoStart: true}); - const model = new Model(web3Connection, erc20.abi as any); + const model = new Model(web3Connection, erc20.abi); const tx = - await hasTxBlockNumber(model.deploy({data: erc20.bytecode, arguments: ["name", "symbol"]}, web3Connection.Account)); + await hasTxBlockNumber(model.deploy({data: erc20.bytecode, arguments: ["name", "symbol", "1000", await web3Connection.getAddress()] as any} as any, web3Connection.Account)); expect(model.contract.abi).to.exist; expect(tx.blockNumber).to.exist; @@ -50,20 +55,37 @@ describe(`Model`, () => { }); it(`Starts but can't interact, only read because no pvtkey`, async () => { - const model = new Model({...options, privateKey: undefined, autoStart: true}, erc20.abi as any, deployedAddress); - expect(await model.callTx(model.contract.methods.name())).to.be.eq('name'); - const AliceAddress = model.web3.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(1)).address; + const model = new Model({...options, privateKey: undefined, autoStart: true}, erc20.abi, deployedAddress); + expect(await model.contract.methods.name().call()).to.be.eq('name'); + const AliceAddress = model.connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(1)).address; await shouldBeRejected(model.sendTx(model.contract.methods.transfer(AliceAddress, '10'))) }) it(`should await the start of a custom model after deploy`, async () => { const model = new ERC20({...options, autoStart: true}); - const BobAddress = model.web3.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(0)).address; - const AliceAddress = model.web3.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(1)).address; + await model.start() + const AliceAddress = model.connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(1)).address; - await hasTxBlockNumber(model.deployJsonAbi("name", "symbol", "2000000000000000000", BobAddress)); + await hasTxBlockNumber(model.deployJsonAbi("name", "symbol", "2000000000000000000")); await hasTxBlockNumber(model.transfer(AliceAddress, 1)); expect(await model.name()).to.be.eq(`name`) }) }) + + describe(`With confirmations > 1`, () => { + it("Waits for 2nd confirmation", async () => { + const model = new Model({...options, autoStart: true, confirmations: 2}, erc20.abi); + const web3Connection = model.connection; + + let tx; + + (async () => { + tx = await model.deploy({data: erc20.bytecode, arguments: ["name", "symbol", "1000", await web3Connection.getAddress()] as any} as any, web3Connection.Account); + })(); + + await new Promise((resolve) => setTimeout(resolve, 3000)); + await hasTxBlockNumber(Promise.resolve(tx)) + + }) + }) }) diff --git a/test/models/erc1155-ownable.spec.ts b/test/models/erc1155-ownable.spec.ts index c72bc2dc..d7b5f376 100644 --- a/test/models/erc1155-ownable.spec.ts +++ b/test/models/erc1155-ownable.spec.ts @@ -1,18 +1,19 @@ import { defaultWeb3Connection, - getPrivateKeyFromFile, shouldBeRejected, } from '../utils'; import { ERC1155Ownable, Web3Connection } from '../../src'; import { expect } from 'chai'; -import { Account } from 'web3-core'; +import {type Web3Account} from "web3-eth-accounts"; +import {getPrivateKeyFromFile} from "../utils/get-pvt-k-from-file"; + describe(`ERC1155 Ownable`, () => { let contract: ERC1155Ownable; let web3Connection: Web3Connection; let contractAddress: string; - let bob: Account; - let alice: Account; + let bob: Web3Account; + let alice: Web3Account; const initial = { uri: 'https://my.token.uri', @@ -43,7 +44,7 @@ describe(`ERC1155 Ownable`, () => { it(`Set a new URI for all tokens`, async () => { const uriBeforeSetting = await contract.uri(0); - await contract.setURI('https://domain.tld/'); + await contract.setURI('https://domain.tld/ownable'); const uriAfterSetting = await contract.uri(0); expect(uriBeforeSetting).to.have.string(initial.uri); @@ -78,7 +79,7 @@ describe(`ERC1155 Ownable`, () => { it(`'setURI' reverts the transaction: OR => OwnerRequired`, async () => { const uriBeforeSetting = await contract.uri(0); await shouldBeRejected(contract.setURI('https://bob.domain/'), 'OR'); - expect(uriBeforeSetting).to.have.string(await contract.uri(0)); + expect(uriBeforeSetting).to.have.string((await contract.uri(0)).toString()); }); it(`'mint' reverts the transaction: OR => OwnerRequired`, async () => { diff --git a/test/models/erc1155-standard.spec.ts b/test/models/erc1155-standard.spec.ts deleted file mode 100644 index 4977bb83..00000000 --- a/test/models/erc1155-standard.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { defaultWeb3Connection, getPrivateKeyFromFile } from '../utils'; -import { ERC1155Standard, Web3Connection } from '../../src'; -import { expect } from 'chai'; -import { Account } from 'web3-core'; - -describe(`ERC1155 Standard`, () => { - let contract: ERC1155Standard; - let web3Connection: Web3Connection; - let contractAddress: string; - let alice: Account; - const initial = { - uri: 'https://my.token.uri', - }; - before(async () => { - web3Connection = await defaultWeb3Connection(true, true); - alice = web3Connection.Web3.eth.accounts.privateKeyToAccount( - getPrivateKeyFromFile(0) - ); - }); - - it(`Deploys the contract`, async () => { - const deployer = new ERC1155Standard(web3Connection); - deployer.loadAbi(); - const tx = await deployer.deployJsonAbi('https://my.token.uri'); - expect(tx.blockNumber).to.exist; - contractAddress = tx.contractAddress!; - }); - - describe(`Methods`, () => { - before(async () => { - contract = new ERC1155Standard(web3Connection, contractAddress!); - await contract.start(); - }); - - it(`Set a new URI for all tokens`, async () => { - const uriBeforeSetting = await contract.uri(0); - await contract.setURI('https://domain.tld/'); - const uriAfterSetting = await contract.uri(0); - - expect(uriBeforeSetting).to.have.string(initial.uri); - expect(uriAfterSetting).to.have.string('https://domain.tld/'); - }); - - it(`mints the token id`, async () => { - await contract.mint(alice.address, 0, 100, '0x12345678'); - expect(await contract.balanceOf(alice.address, 0)).to.be.eq(100); - }); - - it(`mints a bunch of token ids`, async () => { - const tokenIds = [123, 212, 344]; - const amounts = [100, 200, 300]; - await contract.mintBatch(alice.address, tokenIds, amounts, '0x12345678'); - - const expectedAmounts = await contract.balanceOfBatch( - [alice.address, alice.address, alice.address], - tokenIds - ); - - expect(expectedAmounts[0]).to.be.eq(amounts[0]); - expect(expectedAmounts[1]).to.be.eq(amounts[1]); - expect(expectedAmounts[2]).to.be.eq(amounts[2]); - }); - }); -}); diff --git a/test/models/erc20-token-lock.spec.ts b/test/models/erc20-token-lock.spec.ts index a59106d3..cd60a6e7 100644 --- a/test/models/erc20-token-lock.spec.ts +++ b/test/models/erc20-token-lock.spec.ts @@ -40,12 +40,12 @@ describe(`ERC20TokenLock`, () => { it(`Sets max amount to lock`, async () => { expect(await tokenLock.setMaxAmountToLock(2)).to.have.property('blockNumber').to.exist; - expect(await tokenLock.getMaxLock()).to.eq((2).toString()); + expect(await tokenLock.getMaxLock()).to.eq('2.000000000000000000'); }); it(`Sets min amount to lock`, async () => { expect(await tokenLock.setMinAmountToLock(1)).to.have.property('blockNumber').to.exist; - expect(await tokenLock.getMinLock()).to.eq((1).toString()); + expect(await tokenLock.getMinLock()).to.eq('1.000000000000000000'); }); it(`locks tokens and fails unlock because endDate was not reached`, async () => { @@ -53,15 +53,15 @@ describe(`ERC20TokenLock`, () => { await tokenLock.approveERC20Transfer(); await hasTxBlockNumber(tokenLock.lock(1, endDate)); - expect(await tokenLock.getLockedTokens(accountAddress), `get locked tokens`).to.eq((1).toString()); - expect(await tokenLock.totalAmountStaked(), `get total locked`).to.eq((1).toString()); + expect(await tokenLock.getLockedTokens(accountAddress), `get locked tokens`).to.eq('1.000000000000000000'); + expect(await tokenLock.totalAmountStaked(), `get total locked`).to.eq('1.000000000000000000'); await shouldBeRejected(tokenLock.release(), `release date`); }); it(`Should unlock because time-travel`, async () => { await increaseTime(62, web3Connection.Web3); await hasTxBlockNumber(tokenLock.release()); - expect(await tokenLock.getLockedTokens(accountAddress), `get locked tokens`).to.eq((0).toString()); + expect(await tokenLock.getLockedTokens(accountAddress), `get locked tokens`).to.eq('0.000000000000000000'); }); }); diff --git a/test/models/erc20.spec.ts b/test/models/erc20.spec.ts index 40ff96e6..5abe851c 100644 --- a/test/models/erc20.spec.ts +++ b/test/models/erc20.spec.ts @@ -1,10 +1,11 @@ import 'dotenv/config'; -import {ERC20} from '@models/erc20'; +import {ERC20} from '../../src/models/token/ERC20/erc20'; import {expect} from 'chai'; import {toSmartContractDecimals} from '@utils/numbers'; import {describe} from 'mocha'; -import {defaultWeb3Connection, erc20Deployer, getPrivateKeyFromFile, shouldBeRejected,} from '../utils/'; -import {Web3Connection, Web3Contract} from '../../src'; +import {defaultWeb3Connection, erc20Deployer, shouldBeRejected,} from '../utils/'; +import {Web3Connection} from '../../src'; +import {getPrivateKeyFromFile} from "../utils/get-pvt-k-from-file"; describe(`ERC20`, () => { let erc20: ERC20; @@ -35,11 +36,11 @@ describe(`ERC20`, () => { }); it(`ERC20 name, symbol, cap and distributionAddress match`, async () => { - expect(await erc20.totalSupply(), `totalSupply`).to.eq(capAmount) + expect(await erc20.totalSupply(), `totalSupply`).to.eq('1000.000000000000000000') expect(await erc20.name(), `Name`).to.eq(name); expect(await erc20.symbol(), `Symbol`).to.eq(symbol); - expect(await erc20.getTokenAmount(web3Connection.Account.address)).to.eq(capAmount); + expect(await erc20.getTokenAmount(web3Connection.Account.address)).to.eq('1000.000000000000000000'); }); it(`Approves usage`, async () => { @@ -53,7 +54,7 @@ describe(`ERC20`, () => { }) it(`Transfers some tokens`, async () => { - const newAccount = web3Connection.Web3.eth.accounts.create(`0xB3pR0Te511Ng`); + const newAccount = web3Connection.Web3.eth.accounts.create(); const transfer = await erc20.transferTokenAmount(newAccount.address, 1) expect(transfer).to.not.be.empty; }); @@ -69,15 +70,12 @@ describe(`ERC20`, () => { const web3con = new Web3Connection({privateKey, web3Host: web3Connection.options.web3Host}); const _erc20 = new ERC20(web3con, erc20.contractAddress); - const empty = new Web3Contract(web3Connection.Web3, [], undefined, {gasAmount: 90000, auto: true}); - await empty.sendSignedTx(web3Connection.Account, undefined as any, toSmartContractDecimals(1) as any as string, await empty.txOptions(undefined as any)) - await _erc20.start(); await erc20.approve(newAddress, 1000); await _erc20.transferFrom(web3Connection.Account.address, newAddress, 3); - expect(await erc20.getTokenAmount(newAddress)).to.eq((3).toString()); - expect(await erc20.allowance(newAddress, web3Connection.Account.address)).to.be.eq((0).toString()); + expect(await erc20.getTokenAmount(newAddress)).to.eq('3.000000000000000000'); + expect(await erc20.allowance(newAddress, web3Connection.Account.address)).to.be.eq('0.000000000000000000'); await shouldBeRejected(erc20.transferFrom(newAddress, web3Connection.Account.address, 3)); }); }); diff --git a/test/models/erc4626.spec.ts b/test/models/erc4626.spec.ts index da4c52e5..0de6c79b 100644 --- a/test/models/erc4626.spec.ts +++ b/test/models/erc4626.spec.ts @@ -2,15 +2,15 @@ import {describe} from "mocha"; import { defaultWeb3Connection, erc20Deployer, - getPrivateKeyFromFile, hasTxBlockNumber, modelExtensionDeployer, } from "../utils"; import {ERC20, Web3Connection} from "../../src"; -import {ERC4626} from "../../src/models/erc4626"; +import {ERC4626} from "../../src/models/token/ERC4626/erc4626"; import {expect} from "chai"; -import {Account} from "web3-core"; +import {type Web3Account} from "web3-eth-accounts/lib/types"; +import {getPrivateKeyFromFile} from "../utils/get-pvt-k-from-file"; describe(`ERC4626`, () => { @@ -19,9 +19,9 @@ describe(`ERC4626`, () => { let erc20: ERC20; let erc4626Address: string; - let Owner: Account; - let Alice: Account; - let Bob: Account; + let Owner: Web3Account; + let Alice: Web3Account; + let Bob: Web3Account; //const cap = toSmartContractDecimals(AMOUNT_1M); const name = `NAME`; @@ -31,8 +31,8 @@ describe(`ERC4626`, () => { web3Connection = await defaultWeb3Connection(true, true); Owner = web3Connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile()); - Alice = web3Connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(5)); - Bob = web3Connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(6)); + Alice = web3Connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(1)); + Bob = web3Connection.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(2)); const erc20Receipt = await erc20Deployer(name, symbol, '0', web3Connection); @@ -59,135 +59,131 @@ describe(`ERC4626`, () => { }); it(`Asserts underlying decimals`, async () => { - expect(await erc4626.decimals()).to.be.eq('18'); + expect((await erc4626.decimals()).toString()).to.be.eq('18'); }); describe(`Simulates usage`, async () => { before(`Give tokens To Alice and Bob`, async () => { web3Connection.switchToAccount(Owner); - await hasTxBlockNumber(erc20.mint(Alice.address, 4000)); - await hasTxBlockNumber(erc20.mint(Bob.address, 7001)); + await hasTxBlockNumber(erc20.mint(Alice.address, 6000)); + await hasTxBlockNumber(erc20.mint(Bob.address, 6000)); }) it(`Alice approves usage`, async () => { web3Connection.switchToAccount(Alice); - await hasTxBlockNumber(erc20.approve(erc4626Address, 4000)); + await hasTxBlockNumber(erc20.approve(erc4626Address, 6000)); }); it(`Bob approves usage`, async () => { web3Connection.switchToAccount(Bob); - await hasTxBlockNumber(erc20.approve(erc4626Address, 7001)); + await hasTxBlockNumber(erc20.approve(erc4626Address, 6000)); }); it (`Alice mints 2000 shares (costs 2000 erc20)`, async () => { web3Connection.switchToAccount(Alice.privateKey); - expect(await erc4626.previewMint(2000)).to.be.eq('2000'); + expect(await erc4626.previewMint(2000)).to.be.eq('2000.000000000000000000'); await hasTxBlockNumber(erc4626.mint(2000, Alice.address)); - expect(await erc4626.balanceOf(Alice.address)).to.be.eq('2000'); - expect(await erc4626.balanceOf(Bob.address)).to.be.eq('0'); + expect(await erc4626.balanceOf(Alice.address)).to.be.eq('2000.000000000000000000'); + expect(await erc4626.balanceOf(Bob.address)).to.be.eq('0.000000000000000000'); }) - it(`Bob mints 4000 shares (costs 4000 erc20) to himself`, async () => { + it(`Bob mints 2000 shares (costs 2000 erc20) to himself`, async () => { web3Connection.switchToAccount(Bob.privateKey); - expect(await erc4626.previewMint(4000)).to.be.eq('4000'); - expect(await erc4626.mint(4000, Bob.address)); - expect(await erc4626.balanceOf(Bob.address)).to.be.eq('4000'); + expect(await erc4626.previewMint(2000)).to.be.eq('2000.000000000000000000'); + expect(await erc4626.mint(2000, Bob.address)); + expect(await erc4626.balanceOf(Bob.address)).to.be.eq('2000.000000000000000000'); // Asserts that assets and total supply match deposits/mints - expect(await erc4626.totalSupply()).to.be.eq('6000'); - expect(await erc4626.totalAssets()).to.be.eq('6000'); + expect(await erc4626.totalSupply()).to.be.eq('4000.000000000000000000'); + expect(await erc4626.totalAssets()).to.be.eq('4000.000000000000000000'); }) - it(`Vault mutates by +3000 tokens (simulated yield returned from strategy)`, async () => { + it(`Vault mutates by +2000 tokens (simulated yield returned from strategy)`, async () => { web3Connection.switchToAccount(Owner.privateKey); - await hasTxBlockNumber(erc20.mint(erc4626Address, 3000)); + await hasTxBlockNumber(erc20.mint(erc4626Address, 2000)); // Asserts that assets matches deposits/mints - expect(await erc4626.totalSupply()).to.be.eq('6000'); - expect(await erc4626.totalAssets()).to.be.eq('9000'); + expect(await erc4626.totalSupply()).to.be.eq('4000.000000000000000000'); + expect(await erc4626.totalAssets()).to.be.eq('6000.000000000000000000'); }) - it(`Alice deposits 2000 tokens (mints 1333 shares)`, async () => { + it(`Alice deposits 3000 tokens (mints 2000 shares)`, async () => { web3Connection.switchToAccount(Alice.privateKey); - expect(await erc4626.previewDeposit(2000)).to.be.eq('1333'); - await hasTxBlockNumber(erc4626.deposit(2000, Alice.address), `Alice deposits`); - expect(await erc4626.balanceOf(Alice.address)).to.be.eq('3333'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('4999'); - expect(await erc4626.totalSupply()).to.be.eq('7333'); - expect(await erc4626.totalAssets()).to.be.eq('11000'); + expect(await erc4626.previewDeposit(3000)).to.be.eq('2000.000000000000000000'); + await hasTxBlockNumber(erc4626.deposit(3000, Alice.address), `Alice deposits`); + expect(await erc4626.balanceOf(Alice.address)).to.be.eq('4000.000000000000000000'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('6000.000000000000000000'); + expect(await erc4626.totalSupply()).to.be.eq('6000.000000000000000000'); + expect(await erc4626.totalAssets()).to.be.eq('9000.000000000000000000'); }) - it(`Bob mints 2000 shares (costs 3001 erc20)`, async () => { - // NOTE: Bob's assets spent got rounded up - // NOTE: Alice's vault assets got rounded up + it(`Bob mints 1000 shares (costs 1500 erc20)`, async () => { web3Connection.switchToAccount(Bob); - expect(await erc4626.mint(2000, Bob.address)); - expect(await erc4626.balanceOf(Bob.address)).to.eq('6000'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('4999'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('9000'); - expect(await erc4626.totalSupply()).to.be.eq('9333'); - expect(await erc4626.totalAssets()).to.be.eq('14000'); + expect(await erc4626.mint(1000, Bob.address)); + expect(await erc4626.balanceOf(Bob.address)).to.eq('3000.000000000000000000'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('6000.000000000000000000'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('4500.000000000000000000'); + expect(await erc4626.totalSupply()).to.be.eq('7000.000000000000000000'); + expect(await erc4626.totalAssets()).to.be.eq('10500.000000000000000000'); }) - it(`Vault mutates by +3001 tokens`, async () => { + it(`Vault again mutates by +4500 tokens`, async () => { web3Connection.switchToAccount(Owner); - await hasTxBlockNumber(erc20.mint(erc4626Address, 3001)); - - expect(await erc4626.balanceOf(Alice.address)).to.be.eq('3333'); - expect(await erc4626.balanceOf(Bob.address)).to.be.eq('6000'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('6071'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('10929'); - expect(await erc4626.totalSupply()).to.be.eq('9333'); - expect(await erc4626.totalAssets()).to.be.eq('17001'); + await hasTxBlockNumber(erc20.mint(erc4626Address, 4500)); + + expect(await erc4626.totalSupply()).to.be.eq('7000.000000000000000000'); + expect(await erc4626.totalAssets()).to.be.eq('15000.000000000000000000'); }) - it(`Alice redeem 1333 shares (2428 assets)`, async () => { + it(`Alice redeem 2000 shares (4280 assets)`, async () => { web3Connection.switchToAccount(Alice); - expect(await erc4626.previewRedeem(1333)).to.be.eq('2428'); - await hasTxBlockNumber(erc4626.redeem(1333, Alice.address, Alice.address), `Alice redeems`); - expect(await erc4626.balanceOf(Alice.address)).to.be.eq('2000'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('3643'); - expect(await erc4626.totalSupply()).to.be.eq('8000'); - expect(await erc4626.totalAssets()).to.be.eq('14572'); + expect(await erc4626.previewRedeem(2000)).to.be.eq('4285.714285714285714285'); + await hasTxBlockNumber(erc4626.redeem(2000, Alice.address, Alice.address), `Alice redeems`); + expect(await erc4626.balanceOf(Alice.address)).to.be.eq('2000.000000000000000000'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('4285.714285714285714286'); + expect(await erc4626.totalSupply()).to.be.eq('5000.000000000000000000'); + expect(await erc4626.totalAssets()).to.be.eq('10714.285714285714285715'); }) - it(`Bob withdraws 2929 assets (1608 shares)`, async () => { + it(`Bob withdraws 4280 assets (2000 shares)`, async () => { web3Connection.switchToAccount(Bob); - await hasTxBlockNumber(erc4626.withdraw(2929, Bob.address, Bob.address), `Bob withdraws`); - expect(await erc4626.balanceOf(Bob.address)).to.be.eq('4392'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('3643'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('8000'); - expect(await erc4626.totalSupply()).to.be.eq('6392'); - expect(await erc4626.totalAssets()).to.be.eq('11643'); + expect(await erc4626.previewWithdraw(4280)).to.be.eq('1997.333333333333333334') + await hasTxBlockNumber(erc4626.withdraw(4280, Bob.address, Bob.address), `Bob withdraws`); + expect(await erc4626.balanceOf(Bob.address)).to.be.eq('1002.666666666666666666'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('4285.714285714285714287'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('2148.571428571428428572'); + expect(await erc4626.totalSupply()).to.be.eq('3002.666666666666666666'); + expect(await erc4626.totalAssets()).to.be.eq('6434.285714285714285715'); }) - it(`Alice withdraws 3643 assets (2000 shares)`, async () => { - // NOTE: Bob's assets have been rounded back up + it(`Alice withdraws rest of shares`, async () => { web3Connection.switchToAccount(Alice); - expect(await erc4626.previewWithdraw(3643)).to.be.eq('2000'); - await hasTxBlockNumber(erc4626.withdraw(3643, Alice.address, Alice.address), `Alice withdraws`); - - expect(await erc4626.balanceOf(Alice.address)).to.be.eq('0'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('0'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('8000'); - expect(await erc4626.totalSupply()).to.be.eq('4392'); - expect(await erc4626.totalAssets()).to.be.eq('8000'); + const maxWithdraw = await erc4626.maxWithdraw(Alice.address); + expect(await erc4626.previewWithdraw(maxWithdraw)).to.be.eq('2000.000000000000000000'); + await hasTxBlockNumber(erc4626.withdraw(maxWithdraw, Alice.address, Alice.address), `Alice withdraws`); + + expect(await erc4626.balanceOf(Alice.address)).to.be.eq('0.000000000000000000'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Alice.address)))).to.be.eq('0.000000000000000000'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('2148.571428571428428572'); + expect(await erc4626.totalSupply()).to.be.eq('1002.666666666666666666'); + expect(await erc4626.totalAssets()).to.be.eq('2148.571428571428571428'); }) - it(`Bob redeem 4392 shares (8000 tokens)`, async () => { + it(`Bob redeem rest of shares`, async () => { web3Connection.switchToAccount(Bob); - await hasTxBlockNumber(erc4626.redeem(4392, Bob.address, Bob.address), `Bob redeems`); - expect(await erc4626.balanceOf(Bob.address)).to.be.eq('0'); - expect(await erc4626.balanceOf(Alice.address)).to.be.eq('0'); - expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('0'); - expect(await erc4626.totalSupply()).to.be.eq('0'); - expect(await erc4626.totalAssets()).to.be.eq('0'); + const maxRedeem = await erc4626.maxRedeem(Bob.address); + await hasTxBlockNumber(erc4626.redeem(maxRedeem, Bob.address, Bob.address), `Bob redeems`); + expect(await erc4626.balanceOf(Bob.address)).to.be.eq('0.000000000000000000'); + expect(await erc4626.balanceOf(Alice.address)).to.be.eq('0.000000000000000000'); + expect(await erc4626.convertToAssets(+(await erc4626.balanceOf(Bob.address)))).to.be.eq('0.000000000000000000'); + expect(await erc4626.totalSupply()).to.be.eq('0.000000000000000000'); + expect(await erc4626.totalAssets()).to.be.eq('0.000000000000000000'); }) }); }); diff --git a/test/models/erc721-colectibles.spec.ts b/test/models/erc721-colectibles.spec.ts index 52d11e95..39bca0d9 100644 --- a/test/models/erc721-colectibles.spec.ts +++ b/test/models/erc721-colectibles.spec.ts @@ -1,4 +1,4 @@ -import {defaultWeb3Connection, erc20Deployer, hasTxBlockNumber} from '../utils/'; +import {defaultWeb3Connection, erc20Deployer, hasTxBlockNumber, shouldBeRejected} from '../utils/'; import {ERC721Collectibles, Web3Connection} from '../../src'; import {toSmartContractDecimals} from '../../src/utils/numbers'; import {expect} from 'chai'; @@ -69,12 +69,13 @@ describe(`ERC271Collectibles`, () => { it(`Match ownership of held token`, async () => { expect(await contract.registeredIDs(accountAddress, 1000)).to.be.true; // we just asserted that base is 1000 and we have it (we bailed otherwise) - expect(await contract.exists(1000)).to.be.false; // we own it, but haven't minted + await shouldBeRejected(contract.exists(1000)) // we own it, but haven't minted + // expect(await contract.exists(1000)).to.be.eq(nativeZeroAddress); }); it(`mints the token id`, async () => { await hasTxBlockNumber(contract.mint(1000)); - expect(await contract.exists(1000)).to.be.true; + expect(await contract.exists(1000)).to.be.eq(accountAddress); }); it(`Asserts tokenURI url for tokenId`, async () => { diff --git a/test/models/network-factory.spec.ts b/test/models/network-factory.spec.ts deleted file mode 100644 index b10f835a..00000000 --- a/test/models/network-factory.spec.ts +++ /dev/null @@ -1,145 +0,0 @@ -import {Network, NetworkFactory, Web3Connection, fromDecimals, toSmartContractDecimals} from '../../src'; -import {shouldBeRejected, defaultWeb3Connection, erc20Deployer, hasTxBlockNumber} from '../utils/'; -import {describe, it} from 'mocha'; -import {expect} from 'chai'; -import {Errors} from '../../src/interfaces/error-enum'; - -describe(`NetworkFactory`, () => { - - let web3Connection: Web3Connection; - let networkFactoryContractAddress!: string; - let settlerToken: string; - let networkToken: string; - let accountAddress: string; - - const cap = toSmartContractDecimals(1000000); - - before(async () => { - web3Connection = await defaultWeb3Connection(true, true); - accountAddress = web3Connection.Account.address; - }) - - - describe(`Deploy`, () => { - - it(`SettlerToken`, async () => { - const receipt = await erc20Deployer(`Settler`, `$settler`, cap, web3Connection); - expect(receipt.contractAddress).to.not.be.empty; - settlerToken = receipt.contractAddress!; - }); - - it(`NetworkToken`, async () => { - const receipt = await erc20Deployer(`Usage`, `$usage`, cap, web3Connection); - expect(receipt.contractAddress).to.not.be.empty; - networkToken = receipt.contractAddress!; - }); - - it(`Network Factory Contract`, async () => { - const deployer = new NetworkFactory(web3Connection); - await deployer.loadAbi(); - const receipt = await deployer.deployJsonAbi(settlerToken!); - expect(receipt.contractAddress).to.not.be.empty; - networkFactoryContractAddress = receipt.contractAddress; - }); - }); - - - describe(`Integration`, () => { - let networkFactory: NetworkFactory; - - before(async () => { - networkFactory = new NetworkFactory(web3Connection, networkFactoryContractAddress); - await networkFactory.start(); - }) - - it(`Matches token address`, async () => { - expect(await networkFactory.getSettlerTokenAddress()).to.be.eq(settlerToken); - }); - - it(`Throws because no locked amount`, async () => { - await shouldBeRejected(networkFactory.createNetwork(settlerToken!, settlerToken!), `has to lock`); - }); - - it(`Throws because trying to lock 0`, async () => { - await shouldBeRejected(networkFactory.lock(0), Errors.AmountNeedsToBeHigherThanZero) - }); - - it(`Throws because needs allow`, async () => { - await shouldBeRejected(networkFactory.lock(1), `exceeds allowance`); - }); - - it(`Throws because no coins to unlock`, async () => { - await shouldBeRejected(networkFactory.unlock(), `have tokens`); - }); - - it(`Approves, locks and unlocks settler`, async () => { - await networkFactory.approveSettlerERC20Token(); - const tx = await networkFactory.lock(fromDecimals(cap)); - expect(tx.blockHash, `lock action`).to.not.be.empty; - expect(await networkFactory.getBEPROLocked(), `locked total`).to.eq(fromDecimals(cap)); - await hasTxBlockNumber(networkFactory.unlock()) - expect(await networkFactory.getBEPROLocked(), `locked total`).to.eq((0).toString()); - }); - - it(`Should lock and create a new network`, async () => { - await networkFactory.approveSettlerERC20Token(); - await hasTxBlockNumber(networkFactory.lock(fromDecimals(cap))); - const tx = await networkFactory.createNetwork(networkToken!, networkToken!); - expect(await networkFactory.getAmountOfNetworksForked(), `Amount of networks`).to.eq(1); - - const event = await networkFactory.contract.self.getPastEvents(`CreatedNetwork`, {filter: {transactionHash: tx.transactionHash}}) - expect(event[0].returnValues['opener'], `Event opener`).to.be.eq(accountAddress); - }); - - it(`Throws because one network per user`, async () => { - await shouldBeRejected(networkFactory.createNetwork(settlerToken!, settlerToken!), `one Network`) - }); - - describe(`With network`, () => { - let network!: Network; - - before(async () => { - network = new Network(web3Connection, await networkFactory.getNetworkByAddress(accountAddress)); - await network.start(); - }) - - it(`Asserts governor === accountAddress`, async () => { - await hasTxBlockNumber(network.sendTx(network.contract.methods.claimGovernor())) - expect(await network.callTx(network.contract.methods._governor())).to.be.eq(accountAddress); - }) - - it(`Locks tokens and throws because can't unlock`, async () => { - await network.approveSettlerERC20Token(); - await network.lock(10); - await shouldBeRejected(networkFactory.unlock(), `have 0 Settler`) - await network.unlock(10, web3Connection.Account.address); - }); - - it(`Creates an issue and throws because can't unlock`, async () => { - await network.openIssue(`cid1`, 10); - await shouldBeRejected(networkFactory.unlock(), `have 0 Transactional`); - await network.updateIssue(1, 0); - await network.redeemIssue(1); - }); - - it(`Change redeem time`, async () => { - await hasTxBlockNumber(network.changeRedeemTime(60), `Should have changed redeem time`); - expect(await network.redeemTime()).to.be.eq(60); - }); - - it(`Changes disputable time`, async () => { - await hasTxBlockNumber(network.changeDisputableTime(120)); - }) - - it(`Should unlock because issue was redeemed`, async () => { - await hasTxBlockNumber(networkFactory.unlock(), `should have unlocked`); - }); - - it(`Creates a new network because we have already unlocked`, async () => { - await networkFactory.approveSettlerERC20Token(); - await networkFactory.lock(fromDecimals(cap)); - await hasTxBlockNumber(networkFactory.createNetwork(settlerToken!, settlerToken!), `Should have created network`) - }) - }) - }) -}) diff --git a/test/models/network-registry.spec.ts b/test/models/network-registry.spec.ts index 4110f92e..abe95155 100644 --- a/test/models/network-registry.spec.ts +++ b/test/models/network-registry.spec.ts @@ -64,7 +64,7 @@ describe(`Network_Registry`, () => { }); it(`because not allowed`, async () => { - await shouldBeRejected(registry.lock(1), "exceeds allowance"); + await shouldBeRejected(registry.lock(1), "ERC20InsufficientAllowance"); }); it(`because no tokens to unlock`, async () => { @@ -74,7 +74,7 @@ describe(`Network_Registry`, () => { describe(`Green Path`, () => { it (`Parameters on contract should be the same of deployment`, async () => { - expect(await registry.erc20()).to.eq(erc20Address); + expect((await registry.erc20()).toLowerCase()).to.eq(erc20Address); expect(+(await registry.lockAmountForNetworkCreation())).to.eq(lockAmountForNetworkCreation); expect(+(await registry.networkCreationFeePercentage())).to.eq(lockFeePercentage / registry.divisor); }); @@ -82,14 +82,14 @@ describe(`Network_Registry`, () => { it(`Test MAX_LOCK_PERCENTAGE_FEE should be equal to 99%`, async () => { const maxLockPercentageFee = await registry.getMAX_LOCK_PERCENTAGE_FEE(); - expect(maxLockPercentageFee).to.eq((99000000).toString()); + expect(maxLockPercentageFee).to.eq((99000000)); }); it(`Changes amount needed for network creation`, async () => { await hasTxBlockNumber(registry.changeAmountForNetworkCreation(10)); const newLockAmount = await registry.lockAmountForNetworkCreation(); - expect(newLockAmount).to.eq((10).toString()); + expect(newLockAmount).to.eq(('10.000000000000000000').toString()); }); it(`Approves, Locks and Unlocks`, async () => { diff --git a/test/models/network-v2.spec.ts b/test/models/network-v2.spec.ts index 56599a15..ec755e22 100644 --- a/test/models/network-v2.spec.ts +++ b/test/models/network-v2.spec.ts @@ -1,17 +1,28 @@ -import {ERC20, Network_v2, BountyToken, toSmartContractDecimals, Web3Connection, NetworkRegistry} from '../../src'; +import { + BountyToken, + ERC20, + Network_v2, + NetworkRegistry, + toSmartContractDecimals, + Web3Connection +} from '../../src'; import { defaultWeb3Connection, erc20Deployer, - getPrivateKeyFromFile, + expectEvent, hasTxBlockNumber, - increaseTime, modelExtensionDeployer, + increaseTime, + modelExtensionDeployer, shouldBeRejected } from '../utils'; import {expect} from 'chai'; -import {AMOUNT_1M} from '../utils/constants'; -import {nativeZeroAddress, Thousand} from '../../src/utils/constants'; -import {Account} from 'web3-core'; +import {nativeZeroAddress} from '../../src/utils/constants'; +import {type Web3Account} from "web3-eth-accounts/lib/types"; +import {EventLog} from "web3-eth-contract/lib/commonjs/types"; +import {getPrivateKeyFromFile} from "../utils/get-pvt-k-from-file"; + +const AMOUNT_1M = 1000000; describe(`NetworkV2`, () => { let network: Network_v2; @@ -20,9 +31,9 @@ describe(`NetworkV2`, () => { let bountyTransactional: ERC20; let rewardToken: ERC20; let bountyToken: BountyToken; - let Admin: Account; - let Alice: Account; - let Bob: Account; + let Admin: Web3Account; + let Alice: Web3Account; + let Bob: Web3Account; const cap = toSmartContractDecimals(AMOUNT_1M); const newCouncilAmount = 105000; @@ -54,6 +65,8 @@ describe(`NetworkV2`, () => { }) describe(`No Registry`, () => { + const convertToDivisible = (n: number) => n * 1000000; + it(`Deploys Network_V2`, async () => { const _network = new Network_v2(web3Connection); await _network.start(); @@ -64,147 +77,39 @@ describe(`NetworkV2`, () => { }); describe(`Owner`, () => { - it(`changeCouncilAmount()`, async () => { - await hasTxBlockNumber(network.changeCouncilAmount(103000)); - expect(await network.councilAmount()).to.eq((103000).toString()); - }); - - it(`changeCouncilAmount emits event`, async () => { - const tx = await network.changeCouncilAmount(newCouncilAmount) - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '0', - newvalue: toSmartContractDecimals(newCouncilAmount).toString(), - oldvalue: toSmartContractDecimals(103000).toString(), - } - }]) - }) - - it(`changeDraftTime()`, async () => { - await hasTxBlockNumber(network.changeDraftTime(121)); - expect(await network.draftTime()).to.eq(121000); - }); - - it(`changeDraftTime() event emitted`, async () => { - const tx = await network.changeDraftTime(61) - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '2', - newvalue: '61', - oldvalue: '121', - } - }]) - }) - - it(`changeDisputableTime()`, async () => { - await hasTxBlockNumber(network.changeDisputableTime(122)); - expect(await network.disputableTime()).to.eq(122000); - }); - - it(`changeDisputableTime() event emitted`, async () => { - const tx = await network.changeDisputableTime(61) - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '1', - newvalue: '61', - oldvalue: '122', - } - }]) - }) - - it(`changePercentageNeededForDispute()`, async () => { - await hasTxBlockNumber(network.changePercentageNeededForDispute(2)); - expect(await network.percentageNeededForDispute()).to.eq(2); - }); - - it(`changePercentageNeededForDispute() event emitted`, async () => { - const tx = await network.changePercentageNeededForDispute(1) - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '5', - newvalue: network.toPercentage(1).toString(), - oldvalue: network.toPercentage(2).toString(), - } - }]) - }) - - it(`changeMergeCreatorFeeShare()`, async () => { - await hasTxBlockNumber(network.changeMergeCreatorFeeShare(4)); - expect(await network.mergeCreatorFeeShare()).to.eq(4); - }); - - it(`changeMergeCreatorFeeShare() event emitted`, async () => { - const tx = await network.changeMergeCreatorFeeShare(1) - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '4', - newvalue: network.toPercentage(1).toString(), - oldvalue: network.toPercentage(4).toString(), - } - }]) - }) - - it(`changeProposerFeeShare()`, async () => { - await hasTxBlockNumber(network.changeProposerFeeShare(5)); - expect(await network.proposerFeeShare()).to.eq(5); - }); - - it(`changeProposerFeeShare() event emitted`, async () => { - const tx = await network.changeProposerFeeShare(2) - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '8', - newvalue: network.toPercentage(2).toString(), - oldvalue: network.toPercentage(5).toString(), - } - }]) - }) - - it(`changeOracleExchangeRate()`, async () => { - await hasTxBlockNumber(network.changeOracleExchangeRate(1)); - expect(await network.oracleExchangeRate()).to.eq(1); - }); - - it(`changeOracleExchangeRate() event emitted`, async () => { - const tx = await network.changeOracleExchangeRate(2) - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '3', - newvalue: network.toPercentage(2).toString(), - oldvalue: network.toPercentage(1).toString(), - } - }]) + const eventParams = (param: string|number, newvalue: string|number) => + ({param: BigInt(param), newvalue: BigInt(newvalue)}); + + type methods = + 'changeCouncilAmount' + | 'changeDraftTime' + | 'changeDisputableTime' + | 'changePercentageNeededForDispute' + | 'changeMergeCreatorFeeShare' + | 'changeProposerFeeShare' + | 'changeOracleExchangeRate' + | 'changeCancelableTime' + + ([ + ['changeCouncilAmount', 103000, toSmartContractDecimals(103000, 18), 0], + ['changeDisputableTime', 61, 61, 1], + ['changeDraftTime', 121, 121, 2], + ['changeOracleExchangeRate', 2, convertToDivisible(2), 3], + ['changeMergeCreatorFeeShare', 1, convertToDivisible(1), 4], + ['changePercentageNeededForDispute', 1, convertToDivisible(1), 5], + ['changeCancelableTime', 15638400, 15638400, 7], + ['changeProposerFeeShare', 1, convertToDivisible(1), 8], + ] as [methods, number, number, number][]).forEach(([fn, value, newvalue, param]) => { + it(`${fn}()`, async () => { + await expectEvent(network[fn](value), 'NetworkParamChanged', eventParams(param, newvalue)) + }) }) - it(`changeCancelableTime()`, async () => { - await hasTxBlockNumber(network.changeCancelableTime(17280000)); // 181 days - expect(await network.cancelableTime()).to.eq(17280000 * Thousand); - }); - - it(`changeCancelableTime() event emitted`, async () => { - const tx = await network.changeCancelableTime(15638400) // 200 days - expect(tx.logs).to.be.like([{ - event: 'NetworkParamChanged', - args: { - param: '7', - newvalue: "15638400" , - oldvalue: "17280000", - } - }]) - }) }); describe(`Public`, () => { let bountyId: number; - let prId: number; before(async () => { await hasTxBlockNumber(networkToken.approve(network.contractAddress!, AMOUNT_1M)); @@ -217,37 +122,50 @@ describe(`NetworkV2`, () => { it(`Asserts that locked amount matches conversion`, async () => { await hasTxBlockNumber(networkToken.approve(network.contractAddress!, AMOUNT_1M)); await hasTxBlockNumber(network.lock(`104999.999999999999999`)); - expect(await network.getOraclesOf(Admin.address)).to.be.eq(`209999.999999999999998`); // * 2 rate - await hasTxBlockNumber(network.unlock(`209999.999999999999998`)); + expect(await network.getOraclesOf(Admin.address)).to.be.eq(`209999.999999999999998000`); // * 2 rate + await hasTxBlockNumber(network.unlock(`209999.999999999999998000`)); }) it(`Locks NT and receives Network Stake Token`, async () => { await hasTxBlockNumber(networkToken.approve(network.contractAddress!, AMOUNT_1M)); await hasTxBlockNumber(network.lock(205000)); - expect(await network.getOraclesOf(Admin.address)).to.be.eq((205000 * 2).toString()); // we made a 1:2 - expect(await networkToken.getTokenAmount(Admin.address)).to.be.eq((AMOUNT_1M - 205000).toString()); + expect(await network.getOraclesOf(Admin.address)).to.be.eq('410000.000000000000000000'); // we made a 1:2 + expect(await networkToken.getTokenAmount(Admin.address)).to.be.eq('795000.000000000000000000'); }); it(`Delegates to Alice`, async () => { await hasTxBlockNumber(network.delegateOracles(103000, Alice.address)); - expect(await network.getOraclesOf(Admin.address)).to.be.eq(((205000 * 2) - 103000).toString()); - expect(await network.getOraclesOf(Alice.address)).to.be.eq((103000).toString()); + expect(await network.getOraclesOf(Admin.address)).to.be.eq('307000.000000000000000000'); + expect(await network.getOraclesOf(Alice.address)).to.be.eq('103000.000000000000000000'); const aliceDelegation = (await network.getDelegationsOf(Admin.address)).find(({ to }) => to === Alice.address); if (aliceDelegation) - expect(aliceDelegation.amount).to.be.eq((103000).toString()); + expect(aliceDelegation.amount).to.be.eq('103000.000000000000000000'); }); it(`Takes back from Alice`, async () => { await hasTxBlockNumber(network.takeBackOracles(0)); - expect(await network.getOraclesOf(Alice.address)).to.be.eq((0).toString()); - expect(await network.getOraclesOf(Admin.address)).to.be.eq((205000 * 2).toString()); + expect(await network.getOraclesOf(Alice.address)).to.be.eq('0.000000000000000000'); + expect(await network.getOraclesOf(Admin.address)).to.be.eq('410000.000000000000000000'); }) it(`Unlocks NST and receives Network Token`, async () => { await hasTxBlockNumber(network.unlock(200000)); // because 2:1 - expect(await network.getOraclesOf(Admin.address)).to.be.eq((105000 * 2).toString()); - expect(await networkToken.getTokenAmount(Admin.address)).to.be.eq((AMOUNT_1M - 105000).toString()); + expect(await network.getOraclesOf(Admin.address)).to.be.eq('210000.000000000000000000'); + expect(await networkToken.getTokenAmount(Admin.address)).to.be.eq('895000.000000000000000000'); + }); + + it(`Oracles Changed`, async () => { + await expectEvent(network.lock(1000), 'OraclesChanged', {actionAmount: BigInt(toSmartContractDecimals(1000))}); + }); + + it(`Oracles Transfer`, async () => { + const delegate = await network.delegateOracles(1200, Alice.address) + const delegateEvents = await network.getOraclesTransferEvents({fromBlock: delegate.blockNumber}); + const takeBack = await network.takeBackOracles(1); + const takeBackEvents = await network.getOraclesTransferEvents({fromBlock: takeBack.blockNumber}); + expect(delegateEvents.length).to.be.eq(1); + expect(takeBackEvents.length).to.be.eq(1); }); }); @@ -257,41 +175,22 @@ describe(`NetworkV2`, () => { nativeZeroAddress, 0, 0, 'c1', 'Title', '//', 'master', 'ghuser'); - const events = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber, filter: {creator: Admin.address}}); + const events = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber, filter: {creator: Admin.address}}) as EventLog[]; - expect(await bountyTransactional.balanceOf(network.contractAddress!)).to.eq((1000).toString()); + expect(await bountyTransactional.balanceOf(network.contractAddress!)).to.eq('1000.000000000000000000'); expect(events.length).to.be.eq(1); expect(events[0].returnValues.cid).to.be.eq('c1'); - expect((await network.getBountiesOfAddress(Admin.address)).length).to.be.eq(1); + // expect((await network.getBountiesOfAddress(Admin.address)).length).to.be.eq(1); expect(await network.bountiesIndex()).to.be.eq(1); - expect(await network.openBounties()).to.be.eq(1); + // expect(await network.openBounties()).to.be.eq(1); - bountyId = events[0].returnValues.id; + bountyId = events[0].returnValues.id as number; }); it(`Updates bounty amount`, async () => { - const receipt = await network.updateBountyAmount(bountyId, 1001); - - const events = await network.getBountyAmountUpdatedEvents({fromBlock: receipt.blockNumber, filter: {id: bountyId}}); - - expect(events[0].returnValues.amount).to.be.eq(toSmartContractDecimals(1001, bountyTransactional.decimals)); - expect((await network.getBounty(bountyId)).tokenAmount).to.be.eq((1001).toString()); - expect(await bountyTransactional.getTokenAmount(network.contractAddress!)).to.eq((1001).toString()); - }); - - it(`Oracles Changed`, async () => { - const receipt = await network.lock(1000); - const events = await network.getOraclesChangedEvents({fromBlock: receipt.blockNumber, filter: {id: bountyId}}); - expect(events.length).to.be.eq(1); - }); - - it(`Oracles Transfer`, async () => { - const delegate = await network.delegateOracles(1200, Alice.address) - const delegateEvents = await network.getOraclesTransferEvents({fromBlock: delegate.blockNumber}); - const takeBack = await network.takeBackOracles(1); - const takeBackEvents = await network.getOraclesTransferEvents({fromBlock: takeBack.blockNumber}); - expect(delegateEvents.length).to.be.eq(1); - expect(takeBackEvents.length).to.be.eq(1); + await expectEvent(network.updateBountyAmount(bountyId, 1001), 'BountyAmountUpdated', {amount: BigInt(toSmartContractDecimals(1001))}); + expect((await network.getBounty(bountyId)).tokenAmount).to.be.eq((1001)); + expect(await bountyTransactional.getTokenAmount(network.contractAddress!)).to.eq('1001.000000000000000000'); }); it(`Cancels bounty`, async () => { @@ -299,21 +198,21 @@ describe(`NetworkV2`, () => { const receipt = await network.cancelBounty(bountyId); const events = await network.getBountyCanceledEvents({fromBlock: receipt.blockNumber, filter: {id: bountyId}}); expect(events.length).to.be.eq(1); - expect(await network.openBounties()).to.be.eq(0); - expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq((10000).toString()) + // expect(await network.openBounties()).to.be.eq(0); + expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq('10000.000000000000000000') }); describe(`Hard cancels a bounty`,() => { async function prepare(cid: string) { const receipt = await network.openBounty(1000, bountyTransactional.contractAddress!, nativeZeroAddress, 0, 0, cid, 'Title', '//', 'master', 'ghuser'); - const [{returnValues: {id}}] = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber}); + const [{returnValues: {id}}] = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber}) as EventLog[]; await increaseTime(15638402, web3Connection.Web3); // 182 days + 2 seconds - const prReceipt = await network.createPullRequest(id, '//', 'master', cid,'//', 'feat-1', 1); - const [{returnValues: {pullRequestId}}] = await network.getBountyPullRequestCreatedEvents({fromBlock: prReceipt.blockNumber}); - await network.markPullRequestReadyForReview(id, pullRequestId); - const proposalReceipt = await network.createBountyProposal(id, pullRequestId, [nativeZeroAddress], [100]); - const [{returnValues: {proposalId}}] = await network.getBountyProposalCreatedEvents({fromBlock: proposalReceipt.blockNumber}); - return {id, pullRequestId, proposalId}; + const prReceipt = await network.createPullRequest(id as number, '//', 'master', cid,'//', 'feat-1', 1); + const [{returnValues: {pullRequestId}}] = await network.getBountyPullRequestCreatedEvents({fromBlock: prReceipt.blockNumber}) as EventLog[]; + // await network.markPullRequestReadyForReview(id as number, pullRequestId as number); + const proposalReceipt = await network.createBountyProposal(id as number, pullRequestId as number, [nativeZeroAddress], [100]); + const [{returnValues: {proposalId}}] = await network.getBountyProposalCreatedEvents({fromBlock: proposalReceipt.blockNumber}) as EventLog[]; + return {id, pullRequestId, proposalId} as unknown as {id: number, pullRequest: number, proposalId: number}; } it(`by refusal`, async () => { @@ -327,7 +226,7 @@ describe(`NetworkV2`, () => { const {id, proposalId} = await prepare('c6'); await network.lock(newCouncilAmount*3); const {blockNumber: fromBlock} = await network.disputeBountyProposal(id, proposalId); - const [{returnValues: {'4': overflow}}] = await network.getBountyProposalDisputedEvents({fromBlock}); + const [{returnValues: {'4': overflow}}] = await network.getBountyProposalDisputedEvents({fromBlock}) as EventLog[]; expect(await network.isProposalDisputed(id, proposalId)).to.be.true; expect(overflow).to.be.true; await hasTxBlockNumber(network.hardCancel(id)); @@ -344,9 +243,9 @@ describe(`NetworkV2`, () => { nativeZeroAddress, 0, fundingValue, 'c7', 'Title 7', '//', 'master', 'ghuser'); - const events = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber, filter: {creator: Admin.address}}); - bountyId = events[0].returnValues.id; - expect(await network.getBounty(bountyId)).property('fundingAmount').to.be.eq(fundingValue.toString()) + const events = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber, filter: {creator: Admin.address}}) as EventLog[]; + bountyId = events[0].returnValues.id as number; + expect(await network.getBounty(bountyId)).property('fundingAmount').to.be.eq(fundingValue) }); it(`Cancel funding`, async () => { @@ -361,8 +260,8 @@ describe(`NetworkV2`, () => { web3Connection.switchToAccount(Admin.privateKey); await hasTxBlockNumber(network.cancelFundRequest(bountyId)); - expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq((10000).toString()); - expect(await bountyTransactional.getTokenAmount(Bob.address)).to.be.eq((10000).toString()); + expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq('10000.000000000000000000'); + expect(await bountyTransactional.getTokenAmount(Bob.address)).to.be.eq('10000.000000000000000000'); }) it(`Opens Request Funding and Reward`, async () => { @@ -372,10 +271,10 @@ describe(`NetworkV2`, () => { rewardToken.contractAddress!, 1000, 1000, 'c2', 'Title 2', '//', 'master', 'ghuser'); - const events = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber, filter: {creator: Admin.address}}); - bountyId = events[0].returnValues.id; + const events = await network.getBountyCreatedEvents({fromBlock: receipt.blockNumber, filter: {creator: Admin.address}}) as EventLog[]; + bountyId = events[0].returnValues.id as number; - expect(await network.getBounty(bountyId)).property('rewardToken').to.be.eq(rewardToken.contractAddress!); + expect(await network.getBounty(bountyId)).property('rewardToken').to.be.match(new RegExp(rewardToken.contractAddress!, 'i')); }); it(`Fund 50-50`, async () => { @@ -400,8 +299,8 @@ describe(`NetworkV2`, () => { it(`Cancel funding with reward token`, async () => { web3Connection.switchToAccount(Admin.privateKey); await hasTxBlockNumber(network.cancelFundRequest(bountyId)); - expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq((10000).toString()); - expect(await bountyTransactional.getTokenAmount(Bob.address)).to.be.eq((10000).toString()); + expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq('10000.000000000000000000'); + expect(await bountyTransactional.getTokenAmount(Bob.address)).to.be.eq('10000.000000000000000000'); }) }); @@ -414,7 +313,7 @@ describe(`NetworkV2`, () => { 'c3', 'Title 3', '//', 'master', 'ghuser'); bountyId = await network.cidBountyId('c3'); - expect(await network.openBounties()).to.be.eq(1); + // expect(await network.openBounties()).to.be.eq(1); web3Connection.switchToAccount(Alice.privateKey); await bountyTransactional.approve(network.contractAddress!, AMOUNT_1M); @@ -424,49 +323,46 @@ describe(`NetworkV2`, () => { web3Connection.switchToAccount(Admin.privateKey); await increaseTime(62, web3Connection.Web3); await network.lock(await network.councilAmount()); + await increaseTime(await network.draftTime() + 60, web3Connection.Web3); }); - it(`Creates a PR and cancel`, async () => { - const receipt = await network.createPullRequest(bountyId, '//', 'master', - 'c3','//', 'feat-1', 1); + it (`Creates prId 0`, async () => { + await expectEvent(network.createPullRequest(bountyId, '//', 'master', + 'c3','//', 'feat-1', 1), 'BountyPullRequestCreated', {pullRequestId: BigInt(0)}); + }) - const events = await network.getBountyPullRequestCreatedEvents({fromBlock: receipt.blockNumber, filter: {id: bountyId}}) - expect(events.length).to.be.eq(1); - prId = events[0].returnValues.pullRequestId; + it(`Cancels prId 0`, async () => { + await hasTxBlockNumber(network.cancelPullRequest(bountyId, 0)); + expect((await network.getBounty(bountyId)).pullRequests[0].canceled).to.be.true; + }) - await hasTxBlockNumber(network.cancelPullRequest(bountyId, prId)); - expect((await network.getBounty(bountyId)).pullRequests[prId].canceled).to.be.true; + it(`Creates prId 1`, async () => { + await expectEvent(network.createPullRequest(bountyId, '//', 'master', + 'c4','//', 'feat-2', 1), 'BountyPullRequestCreated', {pullRequestId: BigInt(1)}); }); - it(`Creates a PR`, async () => { - const receipt = await network.createPullRequest(bountyId, '//', 'master', - 'c4','//', 'feat-2', 1); - - const events = await network.getBountyPullRequestCreatedEvents({fromBlock: receipt.blockNumber, filter: {id: bountyId}}) - expect(events.length).to.be.eq(1); - prId = events[0].returnValues.pullRequestId; - }); + // it(`Should be unable to create a Proposal because prId 1 is not ready`, async () => { + // await shouldBeRejected(network.createBountyProposal(bountyId, 1, [Alice.address, Bob.address], [51, 49])); + // }); - it(`Should be unable to create a Proposal because PR is not ready`, async () => { - await shouldBeRejected(network.createBountyProposal(bountyId, prId, [Alice.address, Bob.address], [51, 49])); + it(`Set prId 1 as Ready`, async () => { + // await hasTxBlockNumber(network.markPullRequestReadyForReview(bountyId, 1)); + expect((await network.getBounty(bountyId)).pullRequests[1].ready).to.be.true; }); - it(`Set PR as Ready and Creates a Proposal`, async () => { - await hasTxBlockNumber(network.markPullRequestReadyForReview(bountyId, prId)); - expect((await network.getBounty(bountyId)).pullRequests[prId].ready).to.be.true; - - await hasTxBlockNumber(network.createBountyProposal(bountyId, prId, [Alice.address, Bob.address], [51, 49])); + it (`Creates proposal for prId 1`, async () => { + await hasTxBlockNumber(network.createBountyProposal(bountyId, 1, [Alice.address, Bob.address], [51, 49])); expect((await network.getBounty(bountyId)).proposals.length).to.be.eq(1); - }); + }) - it(`Should be unable to cancel a Pull Request because exists a Proposal`, async () => { - await shouldBeRejected(network.cancelPullRequest(bountyId, prId)); + it(`Should be unable to cancel a prId 1 because exists a Proposal`, async () => { + await shouldBeRejected(network.cancelPullRequest(bountyId, 1)); }); it(`Disputes a Proposal`, async () => { await hasTxBlockNumber(network.createPullRequest(bountyId, '//', 'master', 'c5','//', 'feat-2', 1)); - await hasTxBlockNumber(network.markPullRequestReadyForReview(bountyId, 2)); + // await hasTxBlockNumber(network.markPullRequestReadyForReview(bountyId, 2)); await hasTxBlockNumber(network.createBountyProposal(bountyId, 2, [Alice.address, Bob.address], [51, 49])); await hasTxBlockNumber(network.disputeBountyProposal(bountyId, 1)); expect(+(await network.getBounty(bountyId)).proposals[1].disputeWeight).to.be.greaterThan(0); @@ -484,7 +380,7 @@ describe(`NetworkV2`, () => { - await hasTxBlockNumber(network.markPullRequestReadyForReview(bountyId, 3)); + // await hasTxBlockNumber(network.markPullRequestReadyForReview(bountyId, 3)); await hasTxBlockNumber(network.createBountyProposal(bountyId, 3, [Alice.address, Bob.address], [51, 49]), `Should create proposal`); await increaseTime(62, web3Connection.Web3); @@ -493,23 +389,16 @@ describe(`NetworkV2`, () => { await hasTxBlockNumber(network.closeBounty(bountyId, 2), `Should have closed bounty`); - const bountyTokenAmount = +bounty.tokenAmount; - const mergerAmount = bountyTokenAmount / 100 * await network.mergeCreatorFeeShare(); - const proposerAmount = (bountyTokenAmount - mergerAmount) / 100 * await network.proposerFeeShare(); - const bountyAmount = bountyTokenAmount - mergerAmount - proposerAmount; - const AliceAmount = bountyAmount / 100 * 51; - const BobAmount = bountyAmount / 100 * 49; - - expect(await network.openBounties()).to.be.eq(0); - expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq(Number(AliceAmount).toFixed(2)); - expect(await bountyTransactional.getTokenAmount(Bob.address)).to.be.eq(Number(BobAmount + 10000).toFixed(2)); + // expect(await network.openBounties()).to.be.eq(0); + expect(await bountyTransactional.getTokenAmount(Alice.address)).to.be.eq('4998.510000000000000000'); + expect(await bountyTransactional.getTokenAmount(Bob.address)).to.be.eq('14802.490000000000000000'); }); it(`Alice withdraws from bounty`, async () => { await hasTxBlockNumber(network.withdrawFundingReward(bountyId, 0)); - expect(await rewardToken.balanceOf(Alice.address)).to.be.eq((500).toString()); + expect(await rewardToken.balanceOf(Alice.address)).to.be.eq('500.000000000000000000'); await hasTxBlockNumber(network.withdrawFundingReward(bountyId, 1)); - expect(await rewardToken.balanceOf(Alice.address)).to.be.eq((1000).toString()); + expect(await rewardToken.balanceOf(Alice.address)).to.be.eq('1000.000000000000000000'); }); }); }); diff --git a/test/models/network.spec.ts b/test/models/network.spec.ts deleted file mode 100644 index 68722ed8..00000000 --- a/test/models/network.spec.ts +++ /dev/null @@ -1,266 +0,0 @@ -import {describe, it} from 'mocha'; -import {expect} from 'chai'; -import {Network} from '@models/network'; -import {defaultWeb3Connection, erc20Deployer, increaseTime, newWeb3Account, outputDeploy,} from '../utils/'; -import {Web3Connection} from '@base/web3-connection'; -import {toSmartContractDecimals} from '@utils/numbers'; -import {NetworkIssue} from '@interfaces/network-issue'; -import {OraclesSummary} from '@interfaces/oracles-summary'; - -describe(`Network`, () => { - let network: Network; - let web3Connection: Web3Connection; - let networkContractAddress!: string; - let settlerToken!: string; - let transactionToken!: string; - - let accountAddress = `` - const cap = toSmartContractDecimals(10000000); - const newCouncilAmount = '100002'; - - before(async () => { - web3Connection = await defaultWeb3Connection(true, true); - }) - - if (!networkContractAddress) { - describe(`Needs Network deploy`, () => { - if (!settlerToken) - it(`Deploys SettlerToken`, async () => { - const receipt = await erc20Deployer(`Settler`, `$settler`, cap, web3Connection); - expect(receipt.contractAddress).to.not.be.empty; - settlerToken = receipt.contractAddress; - }); - - if (!transactionToken) - it(`Deploys TransactionalToken`, async () => { - const receipt = await erc20Deployer(`Transactional`, `$transactional`, cap, web3Connection); - expect(receipt.contractAddress).to.not.be.empty; - transactionToken = receipt.contractAddress; - }); - - it(`Deploys a Network Contract`, async () => { - const deployer = new Network(web3Connection); - await deployer.loadAbi(); - const receipt = await deployer.deployJsonAbi(settlerToken!, transactionToken!, deployer.connection.Account.address); - expect(receipt.contractAddress).to.not.be.empty; - networkContractAddress = receipt.contractAddress; - }); - - after(() => { - outputDeploy([[`Network`, networkContractAddress!], [`ERC20`, settlerToken!]]) - }); - }); - } - - describe(`Methods`, () => { - before(async () => { - network = new Network(web3Connection, networkContractAddress); - await network.start(); - accountAddress = web3Connection.Account.address; - }); - - it(`Addresses must match`, async () => { - const _settler = await network.getSettlerTokenAddress(); - const _transaction = await network.getTransactionTokenAddress(); - - expect(_settler).to.be.eq(settlerToken); - expect(_transaction).to.be.eq(transactionToken); - }); - - it(`Approves settler`, async () => { - const settler = await network.approveSettlerERC20Token(); - expect(settler.blockHash, `settler hash`).to.not.be.empty; - - const approvedSettler = await network.isApprovedSettlerToken(+newCouncilAmount); - expect(approvedSettler, `isApproved settler`).to.be.true; - - const events = await network.settlerToken.contract.self.getPastEvents(`Approval`, {fromBlock: settler.blockNumber}); - - expect(events[0].returnValues['spender']).to.be.eq(networkContractAddress); - expect(events[0].returnValues['owner']).to.be.eq(accountAddress); - expect(events[0].returnValues['value']).to.be.eq(cap); - }); - - it(`Approves transactional`, async () => { - const transactional = await network.approveTransactionalERC20Token(); - expect(transactional.blockHash, `transactional hash`).to.not.be.empty; - - const approvedTransactional = await network.isApprovedTransactionalToken(1); - expect(approvedTransactional, `isApproved settler`).to.be.true; - }) - - describe(`Oracles`, () => { - - - it(`Change amount needed for council`, async () => { - const change = await network.changeCouncilAmount(newCouncilAmount); - expect(change.blockHash).to.not.be.empty; - }); - - it(`Change redeem time`, async () => { - const change = await network.changeRedeemTime(60); - expect(change.blockHash).to.not.be.empty; - - const redeemTime = await network.redeemTime(); - expect(redeemTime).to.be.eq(60); - }); - - it(`Changes disputable time`, async () => { - const change = await network.changeDisputableTime(120); - expect(change.blockHash).to.not.be.empty; - - // const disputableTime = await network.disputableTime(); - // expect(disputableTime).to.be.eq(120); - }) - - describe(`Locks`, async () => { - it (`Locked`, async () => { - const lock = await network.lock(+newCouncilAmount); - expect(lock.transactionHash, `lock hash`).to.not.be.empty; - }) - - it(`assert locked`, async () => { - expect(await network.isCouncil(accountAddress), `is council`).to.be.true; - }) - - it(`Check bepro staked`, async () => { - expect(+(await network.getBEPROStaked()), `bepro staked`).to.be.greaterThan(0); - }); - - }); - - describe('delegation', () => { - let receiver: string; - let delegated: OraclesSummary; - - before(() => { - receiver = newWeb3Account(web3Connection).address; - }); - - it(`Delegates`, async () => { - const delegate = await network.delegateOracles(1, receiver); - expect(delegate.blockHash, `delegate hash`).to.not.be.empty; - }); - - it(`asserts delegation`, async () => { - delegated = await network.getOraclesSummary(receiver); - expect(delegated.oraclesDelegatedByOthers).to.eq((1).toString()); - }) - - it(`Takes back the oracles`, async () => { - const undelegate = await network.unlock(1, receiver); - expect(undelegate.blockHash, `undelegate hash`).to.not.be.empty; - }) - - it (`asserts take back`, async () => { - const summary = await network.getOraclesSummary(receiver); - expect(+summary.oraclesDelegatedByOthers).to.eq(+delegated.oraclesDelegatedByOthers - 1); - }); - - }); - - describe(`Unlock`, () => { - it (`unlocks`, async () => { - const amount = await network.getOraclesByAddress(accountAddress); - const unlock = await network.unlock(amount, accountAddress); - expect(unlock.blockHash, `unlock hash`).to.not.be.empty; - }); - - it(`Asserts that unlocked`, async () => { - const isCouncil = await network.isCouncil(accountAddress); - expect(isCouncil, `is council`).to.be.false; - }) - }) - }); - - describe(`Issues`, () => { - - describe(`Opens, updates, and redeems an issue`, () => { - let cid: string; - let issue: NetworkIssue; - - before(() => { - cid = web3Connection.Web3.utils.randomHex(4) - }); - - it(`Opens issue`, async () => { - const openIssue = await network.openIssue(cid, 10000) - expect(openIssue.blockHash, `open issue hash`).to.not.be.empty; - - issue = await network.getIssueByCID(cid); - expect(issue.creationDate, `creation date`).to.be.greaterThan(0); - }) - - it(`Updates issue`, async () => { - const updateIssue = await network.updateIssue(issue._id, 2); - expect(updateIssue.blockHash, `update issue hash`).to.not.be.empty; - - issue = await network.getIssueById(issue._id); - expect(issue.tokensStaked, `issue tokens staked`).to.eq((2).toString()); - }) - - it(`Redeems issue`, async () => { - const redeemIssue = await network.redeemIssue(issue._id); - expect(redeemIssue.blockHash, `redeem issue`).to.not.be.empty; - }); - }); - - describe(`Opens, disputes, proposes, and closes an issue`, function () { - let cid: string; - let issue: NetworkIssue; - this.timeout(3 * 60 * 1000); - - before(() => { - cid = web3Connection.Web3.utils.randomHex(4); - }); - - it(`Opens issue`, async () => { - const receipt = await network.openIssue(cid, 1); - expect(receipt.blockHash, `open issue hash`).to.not.be.empty; - }) - - describe(`after redeemTime()`, () => { - before(async () => { - issue = await network.getIssueByCID(cid); - await increaseTime(61, web3Connection.Web3) - }); - - it(`Recognizes as finished`, async () => { - const recognize = await network.recognizeAsFinished(issue._id); - expect(recognize.blockHash, `recognize hash`).to.not.be.empty; - }); - - it(`Proposes issue merge`, async () => { - await network.lock(+newCouncilAmount+1); - const proposal = await network.proposeIssueMerge(issue._id, [accountAddress], [1]); - expect(proposal.blockHash, `proposal hash`).to.not.be.empty; - }); - - it(`Disputes issue merge`, async () => { - await network.lock(1); - const dispute = await network.disputeMerge(issue._id, 0); - expect(dispute.blockHash, `dispute blockhash`).to.not.be.empty; - expect(await network.disputesForMergeByAddress(issue._id, 0, accountAddress)).to.be.greaterThan(0); - }); - - it(`Asserts merge dispute`, async () => { - const disputed = await network.isMergeDisputed(issue._id, 0); - expect(disputed, `disputed`).to.be.true; - }); - }) - - describe(`after disputableTime()`, () => { - before(async () => { - await network.proposeIssueMerge(issue._id, [accountAddress], [1]) - await increaseTime(61, web3Connection.Web3); - }); - - it(`Closes issue`, async () => { - const closed = await network.closeIssue(issue._id, 1); - expect(closed.blockHash, `closed hash`).to.not.be.empty; - }); - }); - }); - }); - }); -}); diff --git a/test/models/real-fevr-marketplace.spec.ts b/test/models/real-fevr-marketplace.spec.ts deleted file mode 100644 index e5b0e814..00000000 --- a/test/models/real-fevr-marketplace.spec.ts +++ /dev/null @@ -1,82 +0,0 @@ -import {defaultWeb3Connection, erc20Deployer, hasTxBlockNumber} from '../utils/'; -import {expect} from 'chai'; -import {RealFevrOpener} from '@models/real-fevr-opener'; -import {RealFevrMarketplace} from '@models/real-fevr-marketplace'; -import {toSmartContractDecimals} from '@utils/numbers'; -import {Web3Connection} from '../../src'; - -describe('Marketplace RealFevr', async () => { - let marketplaceContract: RealFevrMarketplace; - let tokenAddress!: string; - let openerAddress!: string; - let contractAddress!: string; - let accountAddress!: string; - - const purchaseTokenCap = toSmartContractDecimals(1000000); - let web3Connection: Web3Connection; - - before(async () => { - web3Connection = await defaultWeb3Connection(true, true); - accountAddress = web3Connection.Account.address; - }); - - describe('Contracts', () => { - it(`Deploys the token contract`, async () => { - const erc20 = await erc20Deployer(`Settler`, `$settler`, purchaseTokenCap, web3Connection); - - expect(erc20.contractAddress).to.not.be.empty; - tokenAddress = erc20.contractAddress!; - }); - - it(`Deploys the opener contract`, async () => { - const openerDeployer = new RealFevrOpener(web3Connection); - openerDeployer.loadAbi(); - const openerTx = await openerDeployer.deployJsonAbi(`Collectible`, `$stamp`, tokenAddress); - - expect(openerTx.blockNumber).to.exist; - expect(openerTx.contractAddress).to.not.be.empty; - openerAddress = openerTx.contractAddress!; - }); - - it(`Deploys the marketplace contract`, async () => { - const marketplaceDeployer = new RealFevrMarketplace(web3Connection); - marketplaceDeployer.loadAbi(); - const marketplaceTx = await marketplaceDeployer.deployJsonAbi(openerAddress, tokenAddress); - - expect(marketplaceTx.blockNumber).to.exist; - expect(marketplaceTx.contractAddress).to.not.be.empty; - contractAddress = marketplaceTx.contractAddress; - }); - }); - - describe('Methods', () => { - before(async () => { - marketplaceContract = new RealFevrMarketplace(web3Connection, contractAddress!, openerAddress, tokenAddress); - await marketplaceContract.start(); - }); - - it('should create pack of NFTs', async () => { - await hasTxBlockNumber(marketplaceContract.opener.createPack(1, 1, '', 'foo', 'bar', 1, [ '0x0000000000000000000000000000000000000000' ], [ 100 ], [], [])); - }); - - it('should offer pack to owner', async () => { - await hasTxBlockNumber(marketplaceContract.opener.offerPack(1, accountAddress)); - }); - - it('should open pack', async () => { - await hasTxBlockNumber(marketplaceContract.opener.openPack(1)); - }); - - it('should mint NFT', async () => { - await hasTxBlockNumber(marketplaceContract.opener.mint(1)); - }); - - it('should approve NFT', async () => { - await hasTxBlockNumber(marketplaceContract.opener.approve(contractAddress, 1)); - }); - - it('should put NFT up for sale', async () => { - await hasTxBlockNumber(marketplaceContract.putERC721OnSale(1, 1000)); - }); - }); -}); diff --git a/test/models/sablier.spec.ts b/test/models/sablier.spec.ts deleted file mode 100644 index 9e7f7774..00000000 --- a/test/models/sablier.spec.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { - defaultWeb3Connection, - erc20Deployer, getChainDate, - getPrivateKeyFromFile, - hasTxBlockNumber, increaseTime, - modelExtensionDeployer, -} from '../utils'; -import {Account} from 'web3-core'; -import {CERC20, ERC20, ETHUtils, Sablier, Web3Connection} from '../../src'; -import { - AMOUNT_1M, - INITIAL_EXCHANGE_RATE, - SALARY, - STANDARD_SABLIER_FEE, START_TIME_DELTA, START_TIME_OFFSET, -} from '../utils/constants'; -import {toSmartContractDate, toSmartContractDecimals} from '../../src'; -import {addSeconds} from 'date-fns' -import {expect} from 'chai'; - -describe.skip(`Sablier`, () => { - let web3Connection: Web3Connection; - - let Alice: Account; - let Bob: Account; - let Admin: Account; - - - let ethUtils: ETHUtils; - let erc20: ERC20; - let cerc20: CERC20; - let sablier: Sablier; - - let contractAddress: string; - let erc20ContractAddress: string; - - before(async () => { - web3Connection = await defaultWeb3Connection(true, true); - Alice = await web3Connection.Web3.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(1)); - Bob = await web3Connection.Web3.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile(2)); - Admin = await web3Connection.Web3.eth.accounts.privateKeyToAccount(getPrivateKeyFromFile()); - - const ethUtilsTx = await modelExtensionDeployer(web3Connection, ETHUtils); - ethUtils = new ETHUtils(web3Connection, ethUtilsTx.contractAddress); - await ethUtils.start(); - - const erc20Tx = await erc20Deployer(`My Sablier`, `$sablier`, toSmartContractDecimals(AMOUNT_1M), web3Connection); - erc20 = new ERC20(web3Connection, erc20Tx.contractAddress); - await erc20.start(); - - const cercTx = await modelExtensionDeployer(web3Connection, CERC20, [erc20.contractAddress, INITIAL_EXCHANGE_RATE, 18]); - cerc20 = new CERC20(web3Connection, cercTx.contractAddress, erc20.contractAddress!); - await cerc20.start(); - - await web3Connection.switchToAccount(Admin.privateKey); // go back to the original account that created contracts - await erc20.transferTokenAmount(Alice.address, SALARY); - await erc20.transferTokenAmount(Bob.address, SALARY); - - await erc20.approve(cerc20.contractAddress!, AMOUNT_1M); - await cerc20.supplyUnderlying(SALARY); - - erc20ContractAddress = erc20.contractAddress!; - }); - - it(`Should deploy sablier`, async () => { - const tx = await modelExtensionDeployer(web3Connection, Sablier); - expect(tx.contractAddress).to.not.be.empty; - contractAddress = tx.contractAddress!; - }); - - describe(`With sablier contract`, () => { - let startTime = new Date(0); - let streamId = 0; - - before(async () => { - sablier = new Sablier(web3Connection, contractAddress); - await sablier.start(); - startTime = await getChainDate(web3Connection); - }); - - it(`Updates fee`, async () => { - await hasTxBlockNumber(sablier.updateFee(+STANDARD_SABLIER_FEE)); - expect(await sablier.fee()).to.eq((+STANDARD_SABLIER_FEE/100).toString()); - }); - - it(`Creates a compounding stream`, async () => { - - await hasTxBlockNumber(erc20.approve(contractAddress, AMOUNT_1M), `Admin should have approved Sablier contract`); - - startTime = addSeconds(startTime, START_TIME_OFFSET); - const endTime = addSeconds(startTime, START_TIME_DELTA); - - const stream = await sablier.createStream(Bob.address, - SALARY, - erc20ContractAddress, - toSmartContractDate(Math.round(+startTime)), - toSmartContractDate(Math.round(+endTime))); - - const events = await sablier.contract.self.getPastEvents(`CreateStream`, {fromBlock: stream.blockNumber}); - - expect(events[0].returnValues['streamId']).to.not.be.empty; - streamId = events[0].returnValues['streamId']; - }); - - it(`Gets stream`, async () => { - const stream = await sablier.getStream(streamId); - expect(stream.tokenAddress).to.be.eq(erc20ContractAddress); - }); - - it(`Withdraw from stream`, async () => { - await increaseTime(START_TIME_OFFSET + START_TIME_DELTA + 5, web3Connection.Web3); - const balance = await erc20.getTokenAmount(Bob.address); - await hasTxBlockNumber(sablier.withdrawFromStream(streamId, SALARY / 2)); - const newBalance = await erc20.getTokenAmount(Bob.address); - - expect(newBalance).to.be.eq((+balance + (SALARY / 2)).toString()); - }); - - }) -}) diff --git a/test/models/staking.spec.ts b/test/models/staking.spec.ts index b211b0af..3f5f2188 100644 --- a/test/models/staking.spec.ts +++ b/test/models/staking.spec.ts @@ -3,9 +3,9 @@ import { defaultWeb3Connection, erc20Deployer, getChainDate, hasTxBlockNumber, - increaseTime, outputDeploy + increaseTime, } from '../utils/'; -import {toSmartContractDecimals} from '../../src/utils/numbers'; +import {toSmartContractDecimals} from '../../src'; import {addMinutes, differenceInSeconds} from 'date-fns' import {expect} from 'chai'; import BigNumber from 'bignumber.js'; @@ -129,8 +129,4 @@ describe(`StakingContract`, () => { }); }); - - after(() => { - outputDeploy([[`StakingContract`, contractAddress], [`ERC20`, stakeTokenAddress]]) - }); }) diff --git a/test/models/votable.spec.ts b/test/models/votable.spec.ts index ed2c754f..cced9d93 100644 --- a/test/models/votable.spec.ts +++ b/test/models/votable.spec.ts @@ -2,6 +2,7 @@ import {Votable, Web3Connection} from '../../src'; import {defaultWeb3Connection, erc20Deployer, hasTxBlockNumber, increaseTime} from '../utils/'; import {toSmartContractDecimals} from '../../src/'; import {expect} from 'chai'; +import {EventLog} from "web3-eth-contract/lib/commonjs/types"; describe(`Votable`, () => { let accountAddress: string; @@ -44,10 +45,10 @@ describe(`Votable`, () => { const events = await contract.contract.self .getPastEvents(`pollCreated`, - {fromBlock: tx.blockNumber, address: accountAddress}); + {fromBlock: tx.blockNumber}) as EventLog[]; expect(events[0].returnValues["pollID"], `Event opener`).to.not.be.undefined; - pollId = events[0].returnValues["pollID"]; + pollId = events[0].returnValues["pollID"] as number; }); it(`Casts a vote`, async () => { diff --git a/test/utils/constants.ts b/test/utils/constants.ts deleted file mode 100644 index e176f695..00000000 --- a/test/utils/constants.ts +++ /dev/null @@ -1,32 +0,0 @@ -import Web3 from 'web3'; - -export function bn(n: number|string) { return Web3.utils.toBN(n) } -export function pow(n: number, exp: number) { return bn(n).mul(bn(10).pow(bn(exp))) } - -export const AMOUNT_1M = 1000000; -export const SALARY = 3600; -export const AMOUNT_1M_18D = pow(AMOUNT_1M, 18).toString(); - -export const DECIMALS = bn(1e18); -export const STANDARD_SALARY = bn(SALARY).mul(DECIMALS); -export const MAX_UINT256 = `115792089237316195423570985008687907853269984665640564039457584007913129639935`; - -export const FIVE_UNITS = bn(5).mul(DECIMALS).toString(); -export const FIVE_UNITS_CTOKEN = bn(5).mul(DECIMALS).toString(); -export const GAS_LIMIT = 6721975; -export const INITIAL_EXCHANGE_RATE = pow(2, 26).toString(); -export const INITIAL_SUPPLY = STANDARD_SALARY.mul(bn(100)).toString(); -export const ONE_PERCENT_MANTISSA = pow(1, 16).toString(); -export const ONE_UNIT = bn(1).mul(DECIMALS).toString(); -export const ONE_UNIT_CTOKEN = bn(1).mul(DECIMALS).toString(); -export const STANDARD_RATE_PER_SECOND = bn(1).mul(DECIMALS).toString(); -export const STANDARD_RATE_PER_SECOND_CTOKEN = bn(1).mul(DECIMALS).toString(); -export const STANDARD_RECIPIENT_SHARE_PERCENTAGE = 50; -export const STANDARD_SABLIER_FEE = 10; -export const STANDARD_SENDER_SHARE_PERCENTAGE = 50; -export const START_TIME_OFFSET = 300; -export const START_TIME_DELTA = 3600; - -export const ZERO_ADDRESS = `0x0000000000000000000000000000000000000000`; - -export const FEE_3_PERCENT = 3000 // .3% -- uniswap has parts per million diff --git a/test/utils/default-web3-connection.ts b/test/utils/default-web3-connection.ts new file mode 100644 index 00000000..da6c1226 --- /dev/null +++ b/test/utils/default-web3-connection.ts @@ -0,0 +1,27 @@ +import {revertChain} from "./index"; +import {Web3Connection, type Web3ConnectionOptions} from "../../src"; +import {getPrivateKeyFromFile} from "./get-pvt-k-from-file"; + +/** + * A helper function to start a web3connection from process.env files + * @param start + * @param revert + */ +export async function defaultWeb3Connection(start = false, revert = false) { + const options: Web3ConnectionOptions = { + web3Host: process.env.CI_WEB3_HOST_PROVIDER || 'HTTP://127.0.0.1:8545', + privateKey: getPrivateKeyFromFile(), + skipWindowAssignment: true, + restartModelOnDeploy: false, + } + + const web3Connection = new Web3Connection(options); + if (start) + await web3Connection.start(); + if (revert) + await revertChain(web3Connection.Web3); + + web3Connection.eth.contractDataInputFill = "both"; + + return web3Connection; +} \ No newline at end of file diff --git a/test/utils/erc20-deployer.ts b/test/utils/erc20-deployer.ts new file mode 100644 index 00000000..d3943c6e --- /dev/null +++ b/test/utils/erc20-deployer.ts @@ -0,0 +1,20 @@ +import {ERC20, toSmartContractDecimals, Web3Connection, type Web3ConnectionOptions} from "../../src"; + +/** + * Helper to deploy ERC20 tokens + * @param name + * @param symbol + * @param cap + * @param web3Connection + * @returns Promise + */ +export async function erc20Deployer(name: string, symbol: string, cap = toSmartContractDecimals(1000000, 18), web3Connection: Web3Connection|Web3ConnectionOptions, decimals = 18) { + if (!(web3Connection instanceof Web3Connection)) + web3Connection = new Web3Connection(web3Connection) + + web3Connection.start(); + + const deployer = new ERC20(web3Connection); + + return deployer.deployJsonAbi(name, symbol, cap, decimals); +} \ No newline at end of file diff --git a/test/utils/get-chain-date.ts b/test/utils/get-chain-date.ts new file mode 100644 index 00000000..09ef406c --- /dev/null +++ b/test/utils/get-chain-date.ts @@ -0,0 +1,10 @@ +import {type Web3Connection} from "../../src"; + +/** + * Return chain date + * @param web3Connection + * @returns Date + */ +export async function getChainDate(web3Connection: Web3Connection) { + return new Date(parseInt((await web3Connection.eth.getBlock(await web3Connection.Web3.eth.getBlockNumber())).timestamp.toString(),10) * 1000) +} \ No newline at end of file diff --git a/test/utils/get-pvt-k-from-file.ts b/test/utils/get-pvt-k-from-file.ts new file mode 100644 index 00000000..41d92af2 --- /dev/null +++ b/test/utils/get-pvt-k-from-file.ts @@ -0,0 +1,16 @@ +import {readFileSync, existsSync} from "fs"; +import {resolve} from "path"; +import {config} from "hardhat"; +import {deriveKeyFromMnemonicAndPath} from "hardhat/internal/util/keys-derivation"; +import {type HardhatNetworkHDAccountsConfig} from "hardhat/src/types/config"; + +/** + * Returns the private key from the output provided by ganache + * @param index + */ +export function getPrivateKeyFromFile(index = 0) { + if (existsSync(resolve('./keys.json'))) + return Object.values(JSON.parse(readFileSync(resolve('./keys.json'), 'utf-8')).private_keys)[index] as string; + const accounts = config.networks.hardhat.accounts as HardhatNetworkHDAccountsConfig; + return deriveKeyFromMnemonicAndPath(accounts.mnemonic, accounts.path + `/${index}`, accounts.passphrase)!; +} \ No newline at end of file diff --git a/test/utils/increase-chain-time.ts b/test/utils/increase-chain-time.ts new file mode 100644 index 00000000..f903baa1 --- /dev/null +++ b/test/utils/increase-chain-time.ts @@ -0,0 +1,27 @@ +import {type JsonRpcPayload} from "web3-types/src/json_rpc_types"; +import {payload} from "./json-rpc-payload"; +import type Web3 from "web3"; + +/** + * Advance in time by mining a block on the chain + * @param {number} time seconds to increase + * @param {Web3} web3 web3 + */ +export async function increaseTime(time: number, web3: Web3) { + + const timeAdvance = payload(`evm_increaseTime`, [time]) as JsonRpcPayload; + const mine = payload(`evm_mine`, []) as JsonRpcPayload; + const provider = web3.currentProvider!; + + return new Promise((resolve, reject) => { + provider.send(timeAdvance, (err,) => { + if (err) + reject(err); + else provider.send(mine, (err, resp) => { + if (err) + reject(err) + resolve(resp); + }) + }) + }); +} \ No newline at end of file diff --git a/test/utils/index.ts b/test/utils/index.ts index 037b200b..a8ef77a6 100644 --- a/test/utils/index.ts +++ b/test/utils/index.ts @@ -1,78 +1,13 @@ -import {ERC20, toSmartContractDecimals, Web3Connection, Web3ConnectionOptions} from '../../src'; -import {readFileSync} from 'fs'; -import {resolve} from 'path'; import {expect, use} from 'chai'; -import Web3 from 'web3'; -import {HttpProvider, WebsocketProvider} from 'web3-core'; -import {TransactionReceipt} from 'web3-eth'; + import {Log} from "../../src/interfaces/web3-core"; import like from 'chai-like'; import things from 'chai-things'; + use(like); use(things); - -/** - * Returns the private key from the output provided by ganache - * @param index - */ -export function getPrivateKeyFromFile(index = 0) { - return Object.values(JSON.parse(readFileSync(resolve('./keys.json'), 'utf-8')).private_keys)[index] as string; -} - -/** - * A helper function to start a web3connection from process.env files - * @param start - * @param revert - */ -export async function defaultWeb3Connection(start = false, revert = false) { - const options: Web3ConnectionOptions = { - web3Host: process.env.WEB3_HOST_PROVIDER || 'HTTP://127.0.0.1:8545', - privateKey: process.env.WALLET_PRIVATE_KEY || getPrivateKeyFromFile(), - skipWindowAssignment: true, - restartModelOnDeploy: false, - } - - const web3Connection = new Web3Connection(options); - if (start) - await web3Connection.start(); - if (revert) - await revertChain(web3Connection.Web3); - - return web3Connection; -} - -/** - * Helper to deploy ERC20 tokens - * @param name - * @param symbol - * @param cap - * @param web3Connection - * @returns Promise - */ -export async function erc20Deployer(name: string, symbol: string, cap = toSmartContractDecimals(1000000, 18), web3Connection: Web3Connection|Web3ConnectionOptions) { - if (!(web3Connection instanceof Web3Connection)) - web3Connection = new Web3Connection(web3Connection) - - await web3Connection.start(); - - const deployer = new ERC20(web3Connection); - await deployer.loadAbi(); - - const address = await deployer.connection.getAddress(); - return deployer.deployJsonAbi(name, symbol, cap, address); -} - -/** - * Create a new account and return it - * @param web3Connection - * @param salt - */ -export function newWeb3Account(web3Connection: Web3Connection, salt = `0xB3pR0Te511Ng`) { - return web3Connection.Web3.eth.accounts.create(salt); -} - /** * Helper to assert that the promise needs to be rejected * @param promise @@ -83,54 +18,13 @@ export async function shouldBeRejected(promise: Promise, withErrorMessage?: await promise; expect(`to have failed`).to.not.exist; } catch (e: any) { + // console.log(`E`, e); if (withErrorMessage) - expect(e?.message).to.contain(withErrorMessage); + expect((e?.innerError?.message || e?.message)).to.contain(withErrorMessage); else expect(e).to.exist; } } -const payload = (method: string, params: any[] = []) => ({jsonrpc: `2.0`, method, params, id: 0}); - -/** - * Advance in time by mining a block on the chain - * @param {number} time seconds to increase - * @param {Web3} web3 web3 - */ -export async function increaseTime(time: number, web3: Web3) { - - const timeAdvance = payload(`evm_increaseTime`, [time]); - const mine = payload(`evm_mine`, []); - const provider = (web3.currentProvider as HttpProvider|WebsocketProvider); - - return new Promise((resolve, reject) => { - provider.send(timeAdvance, (err,) => { - if (err) - reject(err); - else provider.send(mine, (err, resp) => { - if (err) - reject(err) - resolve(resp); - }) - }) - }); -} - -/** - * Revert the chain to its default state - * @param web3 - */ -export async function revertChain(web3: Web3) { - return new Promise((resolve, reject) => { - (web3.currentProvider as HttpProvider|WebsocketProvider) - .send(payload(`evm_revert`, []), - (err, resp) => { - if (err) - reject(err) - resolve(resp); - }) - }) -} - /** * Assert that the promise returns a block number * @param promise @@ -147,45 +41,23 @@ export async function hasTxBlockNumber(promise: Promise, message = `Should return tx; } -export async function expectEvent(promise: Promise, eventName: string, params: any) { +/** + * Assert that the transaction from the promivent has the needed decoded args and event name + */ +export async function expectEvent(promise: Promise, eventName: string, params?: {[k: string]: any}) { const tx = await hasTxBlockNumber(promise); expect(tx.logs, `Should have logs array`).to.exist; expect(tx.logs).to.be.an('array').that.contains.something.like({event: eventName}); - expect(tx.logs.map((l: Log) => l.args)).to.be.an('array').that.contains.something.like(params); -} - -export function calculateAPR(apr = 1, start = 0, - end = 0, amount = 1) { - const timePassed = +end-+start; - const ms = 60; - return ((((apr / 365 / 24 / ms) * timePassed) / ms) * amount) / 100; -} - -/** - * Return chain date - * @param web3Connection - * @returns Date - */ -export async function getChainDate(web3Connection: Web3Connection) { - return new Date(+(await web3Connection.eth.getBlock(await web3Connection.Web3.eth.getBlockNumber())).timestamp * 1000) -} - -export function outputDeploy(info: [string, string][] = []) { - if (!process.env.DEBUG_TESTS) - return; - console.log(`Deployed`, info.map(([name, address]) => `\n\t${name}:\t${address}`).join(``)) + if (params) + expect(tx.logs.map((l: Log) => l.args)).to.be.an('array').that.contains.something.like(params); } -/** - * Agnostic model deployer to help out in the deployment of initial contracts - * @param web3connection - * @param _class - * @param args - */ -export function modelExtensionDeployer(web3connection: Web3Connection, _class: any, args?: any[]): Promise { - const deployer = new _class(web3connection); - deployer.loadAbi(); - return deployer.deployJsonAbi(...(args || [])); -} +export {getPrivateKeyFromFile} from "./get-pvt-k-from-file"; +export {defaultWeb3Connection} from "./default-web3-connection"; +export {erc20Deployer} from "./erc20-deployer"; +export {increaseTime} from "./increase-chain-time"; +export {revertChain} from "./revert-chain"; +export {getChainDate} from "./get-chain-date"; +export {modelExtensionDeployer} from "./model-deployer"; \ No newline at end of file diff --git a/test/utils/json-rpc-payload.ts b/test/utils/json-rpc-payload.ts new file mode 100644 index 00000000..781d6536 --- /dev/null +++ b/test/utils/json-rpc-payload.ts @@ -0,0 +1 @@ +export const payload = (method: string, params: any[] = []) => ({jsonrpc: `2.0`, method, params, id: +new Date()}); \ No newline at end of file diff --git a/test/utils/model-deployer.ts b/test/utils/model-deployer.ts new file mode 100644 index 00000000..40581296 --- /dev/null +++ b/test/utils/model-deployer.ts @@ -0,0 +1,12 @@ +import {type TransactionReceipt} from "web3-types"; +import {type Web3Connection} from "../../src"; + +/** + * Agnostic model deployer to help out in the deployment of initial contracts + * @param web3connection + * @param _class + * @param args + */ +export function modelExtensionDeployer(web3connection: Web3Connection, _class: any, args?: any[]): Promise { + return new _class(web3connection).deployJsonAbi(...(args || [])); +} \ No newline at end of file diff --git a/test/utils/revert-chain.ts b/test/utils/revert-chain.ts new file mode 100644 index 00000000..aa38ae05 --- /dev/null +++ b/test/utils/revert-chain.ts @@ -0,0 +1,19 @@ +import {type JsonRpcPayload} from "web3-types/src/json_rpc_types"; +import type Web3 from "web3"; +import {payload} from "./json-rpc-payload"; + +/** + * Revert the chain to its default state + * @param web3 + */ +export async function revertChain(web3: Web3) { + return new Promise((resolve, reject) => { + web3.currentProvider! + .send(payload(`evm_revert`, []) as JsonRpcPayload, + (err, resp) => { + if (err) + reject(err) + resolve(resp); + }) + }) +} \ No newline at end of file diff --git a/test/utils/decode-receipt-log.spec.ts b/test/utils/specs/decode-receipt-log.spec.ts similarity index 75% rename from test/utils/decode-receipt-log.spec.ts rename to test/utils/specs/decode-receipt-log.spec.ts index b5f495f9..e319445d 100644 --- a/test/utils/decode-receipt-log.spec.ts +++ b/test/utils/specs/decode-receipt-log.spec.ts @@ -1,12 +1,11 @@ -import {defaultWeb3Connection, erc20Deployer, expectEvent} from "./index"; -import {Web3Connection} from "../../src"; -import {nativeZeroAddress} from "../../src/utils/constants"; +import {defaultWeb3Connection, erc20Deployer, expectEvent} from "../"; +import {Web3Connection} from "../../../src"; +import {nativeZeroAddress} from "../../../src/utils/constants"; + describe(`parseReceiptLogs`, () => { const deploy_amount = `10000`; - - let connection: Web3Connection; before(async () => { @@ -16,6 +15,6 @@ describe(`parseReceiptLogs`, () => { it(`Deploys ERC20 and expect transfer log event`, async () => { await expectEvent( erc20Deployer(`name`, `symbol`, deploy_amount, connection), - `Transfer`, {from: nativeZeroAddress, to: await connection.getAddress(), value: deploy_amount}); + `Transfer`, {from: nativeZeroAddress, to: await connection.getAddress(), value:BigInt(deploy_amount)}); }) }) \ No newline at end of file diff --git a/test/utils/numbers.spec.ts b/test/utils/specs/numbers.spec.ts similarity index 86% rename from test/utils/numbers.spec.ts rename to test/utils/specs/numbers.spec.ts index 66defc30..5ad3491b 100644 --- a/test/utils/numbers.spec.ts +++ b/test/utils/specs/numbers.spec.ts @@ -1,18 +1,18 @@ import {describe} from 'mocha'; import {expect} from "chai"; -import {fromSmartContractDecimals, toSmartContractDecimals} from "../../src"; +import {fromSmartContractDecimals, toSmartContractDecimals} from "../../../src"; describe(`Numbers utilities`, () => { it(`respects small numbers because javascript`, () => { const value = toSmartContractDecimals(`104999.999999999999999`, 18); - expect(fromSmartContractDecimals(value)).to.be.eq(`104999.999999999999999`); + expect(fromSmartContractDecimals(value)).to.be.eq(`104999.999999999999999000`); }) it(`fails with type number because javascript`, () => { const value = toSmartContractDecimals(104999.999999999999999, 18); const transformed = fromSmartContractDecimals(value); expect(transformed).to.not.be.eq(`104999.999999999999999`); - expect(transformed).to.be.eq(`105000`); + expect(transformed).to.be.eq(`105000.000000000000000000`); }); }) \ No newline at end of file diff --git a/tools/compile.mjs b/tools/compile.mjs deleted file mode 100644 index 169fc330..00000000 --- a/tools/compile.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import Contracts from '@truffle/workflow-compile'; - -const config = { - contracts_directory: "./contracts/", - contracts_build_directory: "./build/contracts/", - compilers: { - solc: { - version: "0.7.6", - settings: { - optimizer: { - enabled: true, - runs: 200 - } - } - } - } -} - -Contracts.compileAndSave(config) - .catch(e => { - console.error(`Error`, e); - process.exit(1) - }); \ No newline at end of file diff --git a/tools/contract-json-cleaner.mjs b/tools/contract-json-cleaner.mjs index d9d773ef..5452bb85 100644 --- a/tools/contract-json-cleaner.mjs +++ b/tools/contract-json-cleaner.mjs @@ -1,10 +1,10 @@ -import {lstatSync, readFileSync, writeFileSync, readdirSync} from "fs"; -import {resolve} from "path"; +import {lstatSync, readFileSync, writeFileSync} from "fs"; +import {getFilesOnDir} from "./get-files-on-dir.mjs"; const KEEP_ROOT_KEYS = ['abi', 'bytecode', 'contractName']; function cleanFile(file = "") { - const origin = JSON.parse(readFileSync(file, "utf-8")); + const origin = JSON.parse(readFileSync(file, {encoding: "utf-8"})); return JSON.stringify(KEEP_ROOT_KEYS.reduce((prev, curr) => ({...prev, [curr]: origin[curr]}), {})); } @@ -15,9 +15,8 @@ try { if (stat.isFile()) writeFileSync(jsonOrPath, cleanFile(jsonOrPath), "utf-8"); else - readdirSync(jsonOrPath) - .filter(file => file.endsWith(".json")) - .map(file => resolve(jsonOrPath, file)) + getFilesOnDir(jsonOrPath) + .filter(file => file.endsWith(".json") && !file.endsWith(".dbg.json")) .forEach(pathToFile => writeFileSync(pathToFile, cleanFile(pathToFile), "utf-8")); } catch (e) { diff --git a/tools/contract-size.mjs b/tools/contract-size.mjs index d4118076..a3bc584b 100644 --- a/tools/contract-size.mjs +++ b/tools/contract-size.mjs @@ -1,20 +1,23 @@ -import {lstatSync, readFileSync, readdirSync} from "fs"; -import {resolve} from "path"; +import {lstatSync, readFileSync} from "fs"; +import {getFilesOnDir} from "./get-files-on-dir.mjs"; let limit = process.argv[3] || 24576; -const outputSize = (json) => { +const getContractSize = (json) => { const {contractName, bytecode} = JSON.parse(json); const size = (bytecode.length / 2) - 1; - console.log(size/1000, `kb`, `\t`, contractName, `\t\t`, size > limit ? `Overflow` : ``); + return { + contractName, + size: `${size/1000} kb`, + overflow: size > limit ? true : '', + } } const jsonOrPath = process.argv[2]; -const stat = lstatSync(jsonOrPath); -if (stat.isFile()) - outputSize(readFileSync(jsonOrPath)) +if (lstatSync(jsonOrPath).isFile()) + console.table([getContractSize(readFileSync(jsonOrPath))]) else - readdirSync(jsonOrPath) - .filter(f => f.endsWith(`.json`)) - .forEach(f => outputSize(readFileSync(resolve(jsonOrPath, f)))) \ No newline at end of file + console.table(getFilesOnDir(jsonOrPath) + .filter(f => f.endsWith(`.json`) && !f.endsWith('.dbg.json')) + .map(f => getContractSize(readFileSync(f)))) \ No newline at end of file diff --git a/tools/generate-abi-typings.mjs b/tools/generate-abi-typings.mjs new file mode 100644 index 00000000..e1aa40c1 --- /dev/null +++ b/tools/generate-abi-typings.mjs @@ -0,0 +1,51 @@ +import {readFileSync, writeFileSync} from "fs"; +import {basename, join, resolve} from "path"; +import {getFilesOnDir} from "./get-files-on-dir.mjs"; +import config from '../generate-typings.config.mjs'; + +const template = (content = "") => + `const artifact = ${content.trim()} as const;\nexport default artifact;`; + +async function main() { + console.log("Reading", resolve(config.path)); + + const checkInclude = config.include.length > 0; + const checkExclude = config.exclude.length > 0; + + const test = (key, file) => new RegExp(key).test(file); + + const files = + getFilesOnDir(resolve(config.path)) + .filter(file => + (!checkExclude ? true : !config.exclude.some(key => test(key, basename(file)))) && + (!checkInclude ? true : config.include.some(key => test(key, basename(file))))); + + for (const [i, _filePath] of Object.entries(files)) { + const _exportFilePath = join(config.destination, basename(_filePath.replace(/\.json$/, ".ts"))); + console.log("Loading", +i+1, "of", files.length, _filePath); + let content; + try { + content = JSON.stringify(await import(_filePath)); + } catch (e) { + content = JSON.stringify(JSON.parse(readFileSync(_filePath, {encoding: "utf-8"}))); + } + + try { + writeFileSync(_exportFilePath, template(content)); + } catch (e) { + console.log("Error writing file", _exportFilePath, e); + + // eslint-disable-next-line no-undef + process.exit(1); + } + } + + console.log("Wrote to", resolve(config.destination)); +} + + + +main() + .finally(() => { + console.log("ended"); + }); \ No newline at end of file diff --git a/tools/get-files-on-dir.mjs b/tools/get-files-on-dir.mjs new file mode 100644 index 00000000..c1edc8b8 --- /dev/null +++ b/tools/get-files-on-dir.mjs @@ -0,0 +1,15 @@ +import {lstatSync, readdirSync} from "node:fs"; +import {join} from "node:path"; + +export function getFilesOnDir(path = "", _files = []) { + readdirSync(path) + .forEach(file => { + const filePath = join(path, file); + const stat= lstatSync(filePath); + if (stat.isFile()) + _files.push(filePath.toString()); + else getFilesOnDir(filePath, _files); + }); + + return _files; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index e3708c10..efe4e39a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,7 +27,8 @@ "models/*" ], "@abi/*": [ - "../build/contracts/*" + "../build/contracts/*", + "../artifacts/*" ], "@methods/*": [ "interfaces/methods/*"