diff --git a/.gitignore b/.gitignore index 9c98d108a..52199fb52 100644 --- a/.gitignore +++ b/.gitignore @@ -38,8 +38,6 @@ deployArgs.json /notes.txt .yalc/ yalc.lock -package-lock.json -yarn.lock # Forge #/lib @@ -58,4 +56,4 @@ corpus/ # IDES .idea -*.DS_Store \ No newline at end of file +*.DS_Store diff --git a/.gitmodules b/.gitmodules index 6e01eb969..7872f5e50 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,11 +16,9 @@ [submodule "lib/ERC721A-Upgradeable"] path = lib/ERC721A-Upgradeable url = https://github.com/chiru-labs/ERC721A-Upgradeable - branch = v3.3.0 [submodule "lib/ERC721A"] path = lib/ERC721A url = https://github.com/chiru-labs/ERC721A - branch = v3.3.0 [submodule "lib/dynamic-contracts"] path = lib/dynamic-contracts url = https://github.com/thirdweb-dev/dynamic-contracts diff --git a/.prettierrc b/.prettierrc index 68c86bb0e..09e99ec7c 100644 --- a/.prettierrc +++ b/.prettierrc @@ -11,8 +11,7 @@ { "files": "*.sol", "options": { - "tabWidth": 4, - "explicitTypes": "always" + "tabWidth": 4 } } ] diff --git a/contracts/base/ERC1155Base.sol b/contracts/base/ERC1155Base.sol index ec928f87e..d19da2065 100644 --- a/contracts/base/ERC1155Base.sol +++ b/contracts/base/ERC1155Base.sol @@ -11,7 +11,7 @@ import "../extension/Ownable.sol"; import "../extension/Royalty.sol"; import "../extension/BatchMintMetadata.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; /** * The `ERC1155Base` smart contract implements the ERC1155 NFT standard. @@ -31,7 +31,7 @@ import "../lib/TWStrings.sol"; */ contract ERC1155Base is ERC1155, ContractMetadata, Ownable, Royalty, Multicall, BatchMintMetadata { - using TWStrings for uint256; + using Strings for uint256; /*////////////////////////////////////////////////////////////// State variables @@ -97,12 +97,7 @@ contract ERC1155Base is ERC1155, ContractMetadata, Ownable, Royalty, Multicall, * @param _tokenURI The full metadata URI for the NFTs minted (if a new NFT is being minted). * @param _amount The amount of the same NFT to mint. */ - function mintTo( - address _to, - uint256 _tokenId, - string memory _tokenURI, - uint256 _amount - ) public virtual { + function mintTo(address _to, uint256 _tokenId, string memory _tokenURI, uint256 _amount) public virtual { require(_canMint(), "Not authorized to mint."); uint256 tokenIdToMint; @@ -173,11 +168,7 @@ contract ERC1155Base is ERC1155, ContractMetadata, Ownable, Royalty, Multicall, * @param _tokenId The tokenId of the NFT to burn. * @param _amount The amount of the NFT to burn. */ - function burn( - address _owner, - uint256 _tokenId, - uint256 _amount - ) external virtual { + function burn(address _owner, uint256 _tokenId, uint256 _amount) external virtual { address caller = msg.sender; require(caller == _owner || isApprovedForAll[_owner][caller], "Unapproved caller"); @@ -193,11 +184,7 @@ contract ERC1155Base is ERC1155, ContractMetadata, Ownable, Royalty, Multicall, * @param _tokenIds The tokenIds of the NFTs to burn. * @param _amounts The amounts of the NFTs to burn. */ - function burnBatch( - address _owner, - uint256[] memory _tokenIds, - uint256[] memory _amounts - ) external virtual { + function burnBatch(address _owner, uint256[] memory _tokenIds, uint256[] memory _amounts) external virtual { address caller = msg.sender; require(caller == _owner || isApprovedForAll[_owner][caller], "Unapproved caller"); diff --git a/contracts/base/ERC1155DelayedReveal.sol b/contracts/base/ERC1155DelayedReveal.sol index fbc940a3c..3b06ef207 100644 --- a/contracts/base/ERC1155DelayedReveal.sol +++ b/contracts/base/ERC1155DelayedReveal.sol @@ -25,7 +25,7 @@ import "../extension/DelayedReveal.sol"; */ contract ERC1155DelayedReveal is ERC1155LazyMint, DelayedReveal { - using TWStrings for uint256; + using Strings for uint256; /*////////////////////////////////////////////////////////////// Constructor diff --git a/contracts/base/ERC1155Drop.sol b/contracts/base/ERC1155Drop.sol index 12a8af452..a85a1ba56 100644 --- a/contracts/base/ERC1155Drop.sol +++ b/contracts/base/ERC1155Drop.sol @@ -15,8 +15,8 @@ import "../extension/DropSinglePhase1155.sol"; import "../extension/LazyMint.sol"; import "../extension/DelayedReveal.sol"; -import "../lib/CurrencyTransferLib.sol"; -import "../lib/TWStrings.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; +import "../lib/Strings.sol"; /** * BASE: ERC1155Base @@ -53,7 +53,7 @@ contract ERC1155Drop is DelayedReveal, DropSinglePhase1155 { - using TWStrings for uint256; + using Strings for uint256; /*////////////////////////////////////////////////////////////// Mappings @@ -119,11 +119,7 @@ contract ERC1155Drop is * @param _tokenId The tokenId of the NFT to burn. * @param _amount The amount of the NFT to burn. */ - function burn( - address _owner, - uint256 _tokenId, - uint256 _amount - ) external virtual { + function burn(address _owner, uint256 _tokenId, uint256 _amount) external virtual { address caller = msg.sender; require(caller == _owner || isApprovedForAll[_owner][caller], "Unapproved caller"); @@ -139,11 +135,7 @@ contract ERC1155Drop is * @param _tokenIds The tokenIds of the NFTs to burn. * @param _amounts The amounts of the NFTs to burn. */ - function burnBatch( - address _owner, - uint256[] memory _tokenIds, - uint256[] memory _amounts - ) external virtual { + function burnBatch(address _owner, uint256[] memory _tokenIds, uint256[] memory _amounts) external virtual { address caller = msg.sender; require(caller == _owner || isApprovedForAll[_owner][caller], "Unapproved caller"); diff --git a/contracts/base/ERC1155LazyMint.sol b/contracts/base/ERC1155LazyMint.sol index 628c25ec2..93fb0c2e2 100644 --- a/contracts/base/ERC1155LazyMint.sol +++ b/contracts/base/ERC1155LazyMint.sol @@ -13,7 +13,7 @@ import "../extension/BatchMintMetadata.sol"; import "../extension/LazyMint.sol"; import "../extension/interface/IClaimableERC1155.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; import "../external-deps/openzeppelin/security/ReentrancyGuard.sol"; /** @@ -59,7 +59,7 @@ contract ERC1155LazyMint is IClaimableERC1155, ReentrancyGuard { - using TWStrings for uint256; + using Strings for uint256; /*////////////////////////////////////////////////////////////// Mappings @@ -130,11 +130,7 @@ contract ERC1155LazyMint is * @param _tokenId The tokenId of the lazy minted NFT to mint. * @param _quantity The number of tokens to mint. */ - function claim( - address _receiver, - uint256 _tokenId, - uint256 _quantity - ) public payable virtual nonReentrant { + function claim(address _receiver, uint256 _tokenId, uint256 _quantity) public payable virtual nonReentrant { require(_tokenId < nextTokenIdToMint(), "invalid id"); verifyClaim(msg.sender, _tokenId, _quantity); // Add your claim verification logic by overriding this function. @@ -152,11 +148,7 @@ contract ERC1155LazyMint is * @param _tokenId The tokenId of the lazy minted NFT to mint. * @param _quantity The number of NFTs being claimed. */ - function verifyClaim( - address _claimer, - uint256 _tokenId, - uint256 _quantity - ) public view virtual {} + function verifyClaim(address _claimer, uint256 _tokenId, uint256 _quantity) public view virtual {} /** * @notice Lets an owner or approved operator burn NFTs of the given tokenId. @@ -165,11 +157,7 @@ contract ERC1155LazyMint is * @param _tokenId The tokenId of the NFT to burn. * @param _amount The amount of the NFT to burn. */ - function burn( - address _owner, - uint256 _tokenId, - uint256 _amount - ) external virtual { + function burn(address _owner, uint256 _tokenId, uint256 _amount) external virtual { address caller = msg.sender; require(caller == _owner || isApprovedForAll[_owner][caller], "Unapproved caller"); @@ -185,11 +173,7 @@ contract ERC1155LazyMint is * @param _tokenIds The tokenIds of the NFTs to burn. * @param _amounts The amounts of the NFTs to burn. */ - function burnBatch( - address _owner, - uint256[] memory _tokenIds, - uint256[] memory _amounts - ) external virtual { + function burnBatch(address _owner, uint256[] memory _tokenIds, uint256[] memory _amounts) external virtual { address caller = msg.sender; require(caller == _owner || isApprovedForAll[_owner][caller], "Unapproved caller"); @@ -243,11 +227,7 @@ contract ERC1155LazyMint is * @param _tokenId The tokenId of the lazy minted NFT to mint. * @param _quantity The number of tokens to mint. */ - function _transferTokensOnClaim( - address _receiver, - uint256 _tokenId, - uint256 _quantity - ) internal virtual { + function _transferTokensOnClaim(address _receiver, uint256 _tokenId, uint256 _quantity) internal virtual { _mint(_receiver, _tokenId, _quantity, ""); } diff --git a/contracts/base/ERC1155SignatureMint.sol b/contracts/base/ERC1155SignatureMint.sol index 3d3d684c1..3ccee476f 100644 --- a/contracts/base/ERC1155SignatureMint.sol +++ b/contracts/base/ERC1155SignatureMint.sol @@ -8,7 +8,7 @@ import "./ERC1155Base.sol"; import "../extension/PrimarySale.sol"; import "../extension/SignatureMintERC1155.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * BASE: ERC1155Base @@ -49,13 +49,10 @@ contract ERC1155SignatureMint is ERC1155Base, PrimarySale, SignatureMintERC1155 * @param _req The payload / mint request. * @param _signature The signature produced by an account signing the mint request. */ - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - virtual - override - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable virtual override returns (address signer) { require(_req.quantity > 0, "Minting zero tokens."); uint256 tokenIdToMint; diff --git a/contracts/base/ERC20Base.sol b/contracts/base/ERC20Base.sol index e4ca039d8..bfbd65592 100644 --- a/contracts/base/ERC20Base.sol +++ b/contracts/base/ERC20Base.sol @@ -31,11 +31,7 @@ contract ERC20Base is ContractMetadata, Multicall, Ownable, ERC20Permit, IMintab Constructor //////////////////////////////////////////////////////////////*/ - constructor( - address _defaultAdmin, - string memory _name, - string memory _symbol - ) ERC20Permit(_name, _symbol) { + constructor(address _defaultAdmin, string memory _name, string memory _symbol) ERC20Permit(_name, _symbol) { _setupOwner(_defaultAdmin); } diff --git a/contracts/base/ERC20Drop.sol b/contracts/base/ERC20Drop.sol index 3cc2f512b..e197e6203 100644 --- a/contracts/base/ERC20Drop.sol +++ b/contracts/base/ERC20Drop.sol @@ -12,7 +12,7 @@ import "../extension/PrimarySale.sol"; import "../extension/DropSinglePhase.sol"; import "../extension/interface/IBurnableERC20.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * BASE: ERC20 @@ -112,12 +112,10 @@ contract ERC20Drop is ContractMetadata, Multicall, Ownable, ERC20Permit, Primary } /// @dev Transfers the tokens being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - virtual - override - returns (uint256) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal virtual override returns (uint256) { _mint(_to, _quantityBeingClaimed); return 0; } diff --git a/contracts/base/ERC20DropVote.sol b/contracts/base/ERC20DropVote.sol index e3d1259a5..46020ef79 100644 --- a/contracts/base/ERC20DropVote.sol +++ b/contracts/base/ERC20DropVote.sol @@ -11,7 +11,7 @@ import "../extension/Ownable.sol"; import "../extension/PrimarySale.sol"; import "../extension/DropSinglePhase.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * BASE: ERC20Votes @@ -95,12 +95,10 @@ contract ERC20DropVote is ContractMetadata, Multicall, Ownable, ERC20Votes, Prim } /// @dev Transfers the tokens being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - virtual - override - returns (uint256) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal virtual override returns (uint256) { _mint(_to, _quantityBeingClaimed); return 0; } diff --git a/contracts/base/ERC20SignatureMint.sol b/contracts/base/ERC20SignatureMint.sol index d50188c57..a3a2a2f00 100644 --- a/contracts/base/ERC20SignatureMint.sol +++ b/contracts/base/ERC20SignatureMint.sol @@ -8,7 +8,7 @@ import "./ERC20Base.sol"; import "../extension/PrimarySale.sol"; import { SignatureMintERC20 } from "../extension/SignatureMintERC20.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * BASE: ERC20 @@ -47,12 +47,10 @@ contract ERC20SignatureMint is ERC20Base, PrimarySale, SignatureMintERC20 { * @param _req The payload / mint request. * @param _signature The signature produced by an account signing the mint request. */ - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - virtual - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable virtual returns (address signer) { require(_req.quantity > 0, "Minting zero tokens."); // Verify and process payload. @@ -84,11 +82,7 @@ contract ERC20SignatureMint is ERC20Base, PrimarySale, SignatureMintERC20 { } /// @dev Collects and distributes the primary sale value of tokens being claimed. - function _collectPriceOnClaim( - address _primarySaleRecipient, - address _currency, - uint256 _price - ) internal virtual { + function _collectPriceOnClaim(address _primarySaleRecipient, address _currency, uint256 _price) internal virtual { if (_price == 0) { require(msg.value == 0, "!Value"); return; diff --git a/contracts/base/ERC20SignatureMintVote.sol b/contracts/base/ERC20SignatureMintVote.sol index 67e16793c..80dae73a3 100644 --- a/contracts/base/ERC20SignatureMintVote.sol +++ b/contracts/base/ERC20SignatureMintVote.sol @@ -8,7 +8,7 @@ import "./ERC20Vote.sol"; import "../extension/PrimarySale.sol"; import { SignatureMintERC20 } from "../extension/SignatureMintERC20.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * BASE: ERC20Vote @@ -47,12 +47,10 @@ contract ERC20SignatureMintVote is ERC20Vote, PrimarySale, SignatureMintERC20 { * @param _req The payload / mint request. * @param _signature The signature produced by an account signing the mint request. */ - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - virtual - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable virtual returns (address signer) { require(_req.quantity > 0, "Minting zero tokens."); // Verify and process payload. @@ -91,11 +89,7 @@ contract ERC20SignatureMintVote is ERC20Vote, PrimarySale, SignatureMintERC20 { } /// @dev Collects and distributes the primary sale value of tokens being claimed. - function _collectPriceOnClaim( - address _primarySaleRecipient, - address _currency, - uint256 _price - ) internal virtual { + function _collectPriceOnClaim(address _primarySaleRecipient, address _currency, uint256 _price) internal virtual { if (_price == 0) { require(msg.value == 0, "!Value"); return; diff --git a/contracts/base/ERC20Vote.sol b/contracts/base/ERC20Vote.sol index 6f09101ec..7a13bb852 100644 --- a/contracts/base/ERC20Vote.sol +++ b/contracts/base/ERC20Vote.sol @@ -31,11 +31,7 @@ contract ERC20Vote is ContractMetadata, Multicall, Ownable, ERC20Votes, IMintabl Constructor //////////////////////////////////////////////////////////////*/ - constructor( - address _defaultAdmin, - string memory _name, - string memory _symbol - ) ERC20Permit(_name, _symbol) { + constructor(address _defaultAdmin, string memory _name, string memory _symbol) ERC20Permit(_name, _symbol) { _setupOwner(_defaultAdmin); } diff --git a/contracts/base/ERC721Base.sol b/contracts/base/ERC721Base.sol index 5bde74392..49cc41284 100644 --- a/contracts/base/ERC721Base.sol +++ b/contracts/base/ERC721Base.sol @@ -11,7 +11,7 @@ import "../extension/Ownable.sol"; import "../extension/Royalty.sol"; import "../extension/BatchMintMetadata.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; /** * The `ERC721Base` smart contract implements the ERC721 NFT standard, along with the ERC721A optimization to the standard. @@ -31,7 +31,7 @@ import "../lib/TWStrings.sol"; */ contract ERC721Base is ERC721AQueryable, ContractMetadata, Multicall, Ownable, Royalty, BatchMintMetadata { - using TWStrings for uint256; + using Strings for uint256; /*////////////////////////////////////////////////////////////// Mappings @@ -125,12 +125,7 @@ contract ERC721Base is ERC721AQueryable, ContractMetadata, Multicall, Ownable, R * @param _baseURI The baseURI for the `n` number of NFTs minted. The metadata for each NFT is `baseURI/tokenId` * @param _data Additional data to pass along during the minting of the NFT. */ - function batchMintTo( - address _to, - uint256 _quantity, - string memory _baseURI, - bytes memory _data - ) public virtual { + function batchMintTo(address _to, uint256 _quantity, string memory _baseURI, bytes memory _data) public virtual { require(_canMint(), "Not authorized to mint."); _batchMintMetadata(nextTokenIdToMint(), _quantity, _baseURI); _safeMint(_to, _quantity, _data); @@ -163,12 +158,10 @@ contract ERC721Base is ERC721AQueryable, ContractMetadata, Multicall, Ownable, R * * @return isApprovedOrOwnerOf Whether the given address is approved to transfer the given NFT. */ - function isApprovedOrOwner(address _operator, uint256 _tokenId) - public - view - virtual - returns (bool isApprovedOrOwnerOf) - { + function isApprovedOrOwner( + address _operator, + uint256 _tokenId + ) public view virtual returns (bool isApprovedOrOwnerOf) { address owner = ownerOf(_tokenId); isApprovedOrOwnerOf = (_operator == owner || isApprovedForAll(owner, _operator) || diff --git a/contracts/base/ERC721DelayedReveal.sol b/contracts/base/ERC721DelayedReveal.sol index 1c17f0051..624ec4ecc 100644 --- a/contracts/base/ERC721DelayedReveal.sol +++ b/contracts/base/ERC721DelayedReveal.sol @@ -26,7 +26,7 @@ import "../extension/DelayedReveal.sol"; */ contract ERC721DelayedReveal is ERC721LazyMint, DelayedReveal { - using TWStrings for uint256; + using Strings for uint256; /*////////////////////////////////////////////////////////////// Constructor diff --git a/contracts/base/ERC721Drop.sol b/contracts/base/ERC721Drop.sol index 60fd84dc2..a4d2e5a88 100644 --- a/contracts/base/ERC721Drop.sol +++ b/contracts/base/ERC721Drop.sol @@ -15,8 +15,8 @@ import "../extension/DropSinglePhase.sol"; import "../extension/LazyMint.sol"; import "../extension/DelayedReveal.sol"; -import "../lib/TWStrings.sol"; -import "../lib/CurrencyTransferLib.sol"; +import "../lib/Strings.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * BASE: ERC721A @@ -53,7 +53,7 @@ contract ERC721Drop is DelayedReveal, DropSinglePhase { - using TWStrings for uint256; + using Strings for uint256; /*/////////////////////////////////////////////////////////////// Constructor @@ -254,12 +254,10 @@ contract ERC721Drop is * @param _to The address to which the NFTs are being transferred. * @param _quantityBeingClaimed The quantity of NFTs being claimed. */ - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - virtual - override - returns (uint256 startTokenId) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal virtual override returns (uint256 startTokenId) { startTokenId = _currentIndex; _safeMint(_to, _quantityBeingClaimed); } diff --git a/contracts/base/ERC721LazyMint.sol b/contracts/base/ERC721LazyMint.sol index 4d18a2a88..84c23d61d 100644 --- a/contracts/base/ERC721LazyMint.sol +++ b/contracts/base/ERC721LazyMint.sol @@ -13,7 +13,7 @@ import "../extension/BatchMintMetadata.sol"; import "../extension/LazyMint.sol"; import "../extension/interface/IClaimableERC721.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; import "../external-deps/openzeppelin/security/ReentrancyGuard.sol"; /** @@ -53,7 +53,7 @@ contract ERC721LazyMint is IClaimableERC721, ReentrancyGuard { - using TWStrings for uint256; + using Strings for uint256; /*////////////////////////////////////////////////////////////// Constructor @@ -184,11 +184,10 @@ contract ERC721LazyMint is * * @return startTokenId The tokenId of the first NFT minted. */ - function _transferTokensOnClaim(address _receiver, uint256 _quantity) - internal - virtual - returns (uint256 startTokenId) - { + function _transferTokensOnClaim( + address _receiver, + uint256 _quantity + ) internal virtual returns (uint256 startTokenId) { startTokenId = _currentIndex; _safeMint(_receiver, _quantity); } diff --git a/contracts/base/ERC721Multiwrap.sol b/contracts/base/ERC721Multiwrap.sol index 62adb6a99..9d6873325 100644 --- a/contracts/base/ERC721Multiwrap.sol +++ b/contracts/base/ERC721Multiwrap.sol @@ -110,13 +110,9 @@ contract ERC721Multiwrap is Multicall, TokenStore, SoulboundERC721A, ERC721A, Co * @dev See ERC165: https://eips.ethereum.org/EIPS/eip-165 * @inheritdoc IERC165 */ - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC1155Receiver, ERC721A, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC1155Receiver, ERC721A, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 @@ -201,12 +197,10 @@ contract ERC721Multiwrap is Multicall, TokenStore, SoulboundERC721A, ERC721A, Co * * @return isApprovedOrOwnerOf Whether `_operator` is approved to transfer `_tokenId`. */ - function isApprovedOrOwner(address _operator, uint256 _tokenId) - public - view - virtual - returns (bool isApprovedOrOwnerOf) - { + function isApprovedOrOwner( + address _operator, + uint256 _tokenId + ) public view virtual returns (bool isApprovedOrOwnerOf) { address owner = ownerOf(_tokenId); isApprovedOrOwnerOf = (_operator == owner || isApprovedForAll(owner, _operator) || diff --git a/contracts/base/ERC721SignatureMint.sol b/contracts/base/ERC721SignatureMint.sol index 4ecab0c68..e6ec12e4f 100644 --- a/contracts/base/ERC721SignatureMint.sol +++ b/contracts/base/ERC721SignatureMint.sol @@ -9,7 +9,7 @@ import "../extension/PrimarySale.sol"; import "../extension/PermissionsEnumerable.sol"; import "../extension/SignatureMintERC721.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * BASE: ERC721A @@ -50,13 +50,10 @@ contract ERC721SignatureMint is ERC721Base, PrimarySale, SignatureMintERC721 { * @param _req The payload / mint request. * @param _signature The signature produced by an account signing the mint request. */ - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - virtual - override - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable virtual override returns (address signer) { require(_req.quantity == 1, "quantiy must be 1"); uint256 tokenIdToMint = nextTokenIdToMint(); diff --git a/contracts/base/Staking1155Base.sol b/contracts/base/Staking1155Base.sol index be9a1979c..e5c8f8773 100644 --- a/contracts/base/Staking1155Base.sol +++ b/contracts/base/Staking1155Base.sol @@ -93,13 +93,7 @@ contract Staking1155Base is ContractMetadata, Multicall, Ownable, Staking1155, E ERC 165 / 721 logic //////////////////////////////////////////////////////////////*/ - function onERC1155Received( - address, - address, - uint256, - uint256, - bytes calldata - ) external view returns (bytes4) { + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external view returns (bytes4) { require(isStaking == 2, "Direct transfer"); return this.onERC1155Received.selector; } diff --git a/contracts/eip/ERC1155.sol b/contracts/eip/ERC1155.sol index 31e6bb93f..5a0d5647e 100644 --- a/contracts/eip/ERC1155.sol +++ b/contracts/eip/ERC1155.sol @@ -47,13 +47,10 @@ contract ERC1155 is IERC1155, IERC1155Metadata { return _uri[tokenId]; } - function balanceOfBatch(address[] memory accounts, uint256[] memory ids) - public - view - virtual - override - returns (uint256[] memory) - { + function balanceOfBatch( + address[] memory accounts, + uint256[] memory ids + ) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "LENGTH_MISMATCH"); uint256[] memory batchBalances = new uint256[](accounts.length); @@ -162,12 +159,7 @@ contract ERC1155 is IERC1155, IERC1155Metadata { _uri[tokenId] = newuri; } - function _mint( - address to, - uint256 id, - uint256 amount, - bytes memory data - ) internal virtual { + function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual { require(to != address(0), "TO_ZERO_ADDR"); address operator = msg.sender; @@ -202,11 +194,7 @@ contract ERC1155 is IERC1155, IERC1155Metadata { _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } - function _burn( - address from, - uint256 id, - uint256 amount - ) internal virtual { + function _burn(address from, uint256 id, uint256 amount) internal virtual { require(from != address(0), "FROM_ZERO_ADDR"); address operator = msg.sender; @@ -222,11 +210,7 @@ contract ERC1155 is IERC1155, IERC1155Metadata { emit TransferSingle(operator, from, address(0), id, amount); } - function _burnBatch( - address from, - uint256[] memory ids, - uint256[] memory amounts - ) internal virtual { + function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual { require(from != address(0), "FROM_ZERO_ADDR"); require(ids.length == amounts.length, "LENGTH_MISMATCH"); diff --git a/contracts/eip/ERC721A.sol b/contracts/eip/ERC721A.sol index 198686d51..9ae9c99f4 100644 --- a/contracts/eip/ERC721A.sol +++ b/contracts/eip/ERC721A.sol @@ -6,9 +6,9 @@ pragma solidity ^0.8.4; import "./interface/IERC721A.sol"; import "../external-deps/openzeppelin/token/ERC721/IERC721Receiver.sol"; -import "../lib/TWAddress.sol"; +import "../lib/Address.sol"; import "../external-deps/openzeppelin/utils/Context.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; import "./ERC165.sol"; /** @@ -22,8 +22,8 @@ import "./ERC165.sol"; * Assumes that the maximum token id cannot exceed 2^256 - 1 (max value of uint256). */ contract ERC721A is Context, ERC165, IERC721A { - using TWAddress for address; - using TWStrings for uint256; + using Address for address; + using Strings for uint256; // The tokenId of the next token to be minted. uint256 internal _currentIndex; @@ -248,34 +248,21 @@ contract ERC721A is Context, ERC165, IERC721A { /** * @dev See {IERC721-transferFrom}. */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function transferFrom(address from, address to, uint256 tokenId) public virtual override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes memory _data - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { _transfer(from, to, tokenId); if (to.isContract()) if (!_checkContractOnERC721Received(from, to, tokenId, _data)) { @@ -312,11 +299,7 @@ contract ERC721A is Context, ERC165, IERC721A { * * Emits a {Transfer} event. */ - function _safeMint( - address to, - uint256 quantity, - bytes memory _data - ) internal { + function _safeMint(address to, uint256 quantity, bytes memory _data) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); @@ -404,11 +387,7 @@ contract ERC721A is Context, ERC165, IERC721A { * * Emits a {Transfer} event. */ - function _transfer( - address from, - address to, - uint256 tokenId - ) private { + function _transfer(address from, address to, uint256 tokenId) private { TokenOwnership memory prevOwnership = _ownershipOf(tokenId); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); @@ -531,11 +510,7 @@ contract ERC721A is Context, ERC165, IERC721A { * * Emits a {Approval} event. */ - function _approve( - address to, - uint256 tokenId, - address owner - ) private { + function _approve(address to, uint256 tokenId, address owner) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } @@ -583,12 +558,7 @@ contract ERC721A is Context, ERC165, IERC721A { * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ - function _beforeTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes @@ -606,10 +576,5 @@ contract ERC721A is Context, ERC165, IERC721A { * - When `to` is zero, `tokenId` has been burned by `from`. * - `from` and `to` are never both zero. */ - function _afterTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _afterTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} } diff --git a/contracts/eip/ERC721AUpgradeable.sol b/contracts/eip/ERC721AUpgradeable.sol index b8ae2f0fd..50fdef270 100644 --- a/contracts/eip/ERC721AUpgradeable.sol +++ b/contracts/eip/ERC721AUpgradeable.sol @@ -8,9 +8,9 @@ pragma solidity ^0.8.4; import "./interface/IERC721A.sol"; import "./interface/IERC721Receiver.sol"; -import "../lib/TWAddress.sol"; +import "../lib/Address.sol"; import "../external-deps/openzeppelin/utils/Context.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; import "./ERC165.sol"; import "../extension/upgradeable/Initializable.sol"; @@ -59,8 +59,8 @@ library ERC721AStorage { * Assumes that the maximum token id cannot exceed 2**256 - 1 (max value of uint256). */ contract ERC721AUpgradeable is Initializable, Context, ERC165, IERC721A { - using TWAddress for address; - using TWStrings for uint256; + using Address for address; + using Strings for uint256; function __ERC721A_init(string memory name_, string memory symbol_) internal onlyInitializing { __ERC721A_init_unchained(name_, symbol_); @@ -283,34 +283,21 @@ contract ERC721AUpgradeable is Initializable, Context, ERC165, IERC721A { /** * @dev See {IERC721-transferFrom}. */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function transferFrom(address from, address to, uint256 tokenId) public virtual override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes memory _data - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { _transfer(from, to, tokenId); if (to.isContract()) if (!_checkContractOnERC721Received(from, to, tokenId, _data)) { @@ -348,11 +335,7 @@ contract ERC721AUpgradeable is Initializable, Context, ERC165, IERC721A { * * Emits a {Transfer} event. */ - function _safeMint( - address to, - uint256 quantity, - bytes memory _data - ) internal { + function _safeMint(address to, uint256 quantity, bytes memory _data) internal { ERC721AStorage.Data storage data = ERC721AStorage.erc721AStorage(); uint256 startTokenId = data._currentIndex; @@ -444,11 +427,7 @@ contract ERC721AUpgradeable is Initializable, Context, ERC165, IERC721A { * * Emits a {Transfer} event. */ - function _transfer( - address from, - address to, - uint256 tokenId - ) private { + function _transfer(address from, address to, uint256 tokenId) private { ERC721AStorage.Data storage data = ERC721AStorage.erc721AStorage(); TokenOwnership memory prevOwnership = _ownershipOf(tokenId); @@ -575,11 +554,7 @@ contract ERC721AUpgradeable is Initializable, Context, ERC165, IERC721A { * * Emits a {Approval} event. */ - function _approve( - address to, - uint256 tokenId, - address owner - ) private { + function _approve(address to, uint256 tokenId, address owner) private { ERC721AStorage.Data storage data = ERC721AStorage.erc721AStorage(); data._tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); @@ -628,12 +603,7 @@ contract ERC721AUpgradeable is Initializable, Context, ERC165, IERC721A { * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ - function _beforeTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes @@ -651,10 +621,5 @@ contract ERC721AUpgradeable is Initializable, Context, ERC165, IERC721A { * - When `to` is zero, `tokenId` has been burned by `from`. * - `from` and `to` are never both zero. */ - function _afterTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _afterTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} } diff --git a/contracts/eip/ERC721AVirtualApprove.sol b/contracts/eip/ERC721AVirtualApprove.sol index 9da6d1b83..45c5232ce 100644 --- a/contracts/eip/ERC721AVirtualApprove.sol +++ b/contracts/eip/ERC721AVirtualApprove.sol @@ -8,9 +8,9 @@ pragma solidity ^0.8.4; import "./interface/IERC721A.sol"; import "./interface/IERC721Receiver.sol"; -import "../lib/TWAddress.sol"; +import "../lib/Address.sol"; import "../external-deps/openzeppelin/utils/Context.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; import "./ERC165.sol"; /** @@ -24,8 +24,8 @@ import "./ERC165.sol"; * Assumes that the maximum token id cannot exceed 2**256 - 1 (max value of uint256). */ contract ERC721A is Context, ERC165, IERC721A { - using TWAddress for address; - using TWStrings for uint256; + using Address for address; + using Strings for uint256; // The tokenId of the next token to be minted. uint256 internal _currentIndex; @@ -250,34 +250,21 @@ contract ERC721A is Context, ERC165, IERC721A { /** * @dev See {IERC721-transferFrom}. */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function transferFrom(address from, address to, uint256 tokenId) public virtual override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes memory _data - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { _transfer(from, to, tokenId); if (to.isContract()) if (!_checkContractOnERC721Received(from, to, tokenId, _data)) { @@ -314,11 +301,7 @@ contract ERC721A is Context, ERC165, IERC721A { * * Emits a {Transfer} event. */ - function _safeMint( - address to, - uint256 quantity, - bytes memory _data - ) internal { + function _safeMint(address to, uint256 quantity, bytes memory _data) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); @@ -406,11 +389,7 @@ contract ERC721A is Context, ERC165, IERC721A { * * Emits a {Transfer} event. */ - function _transfer( - address from, - address to, - uint256 tokenId - ) private { + function _transfer(address from, address to, uint256 tokenId) private { TokenOwnership memory prevOwnership = _ownershipOf(tokenId); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); @@ -533,11 +512,7 @@ contract ERC721A is Context, ERC165, IERC721A { * * Emits a {Approval} event. */ - function _approve( - address to, - uint256 tokenId, - address owner - ) private { + function _approve(address to, uint256 tokenId, address owner) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } @@ -585,12 +560,7 @@ contract ERC721A is Context, ERC165, IERC721A { * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ - function _beforeTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes @@ -608,10 +578,5 @@ contract ERC721A is Context, ERC165, IERC721A { * - When `to` is zero, `tokenId` has been burned by `from`. * - `from` and `to` are never both zero. */ - function _afterTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _afterTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} } diff --git a/contracts/eip/ERC721AVirtualApproveUpgradeable.sol b/contracts/eip/ERC721AVirtualApproveUpgradeable.sol index 31c3b57dd..55d233bbc 100644 --- a/contracts/eip/ERC721AVirtualApproveUpgradeable.sol +++ b/contracts/eip/ERC721AVirtualApproveUpgradeable.sol @@ -95,13 +95,9 @@ contract ERC721AUpgradeable is Initializable, ContextUpgradeable, ERC165Upgradea /** * @dev See {IERC165-supportsInterface}. */ - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC165Upgradeable, IERC165Upgradeable) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) { return interfaceId == type(IERC721Upgradeable).interfaceId || interfaceId == type(IERC721MetadataUpgradeable).interfaceId || @@ -261,34 +257,21 @@ contract ERC721AUpgradeable is Initializable, ContextUpgradeable, ERC165Upgradea /** * @dev See {IERC721-transferFrom}. */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function transferFrom(address from, address to, uint256 tokenId) public virtual override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes memory _data - ) public virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { _transfer(from, to, tokenId); if (to.isContract()) if (!_checkContractOnERC721Received(from, to, tokenId, _data)) { @@ -325,11 +308,7 @@ contract ERC721AUpgradeable is Initializable, ContextUpgradeable, ERC165Upgradea * * Emits a {Transfer} event. */ - function _safeMint( - address to, - uint256 quantity, - bytes memory _data - ) internal { + function _safeMint(address to, uint256 quantity, bytes memory _data) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); @@ -417,11 +396,7 @@ contract ERC721AUpgradeable is Initializable, ContextUpgradeable, ERC165Upgradea * * Emits a {Transfer} event. */ - function _transfer( - address from, - address to, - uint256 tokenId - ) private { + function _transfer(address from, address to, uint256 tokenId) private { TokenOwnership memory prevOwnership = _ownershipOf(tokenId); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); @@ -544,11 +519,7 @@ contract ERC721AUpgradeable is Initializable, ContextUpgradeable, ERC165Upgradea * * Emits a {Approval} event. */ - function _approve( - address to, - uint256 tokenId, - address owner - ) private { + function _approve(address to, uint256 tokenId, address owner) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } @@ -598,12 +569,7 @@ contract ERC721AUpgradeable is Initializable, ContextUpgradeable, ERC165Upgradea * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ - function _beforeTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes @@ -621,12 +587,7 @@ contract ERC721AUpgradeable is Initializable, ContextUpgradeable, ERC165Upgradea * - When `to` is zero, `tokenId` has been burned by `from`. * - `from` and `to` are never both zero. */ - function _afterTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _afterTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} /** * @dev This empty reserved space is put in place to allow future versions to add new diff --git a/contracts/eip/interface/IERC1155.sol b/contracts/eip/interface/IERC1155.sol index cfe341157..1f2d9e919 100644 --- a/contracts/eip/interface/IERC1155.sol +++ b/contracts/eip/interface/IERC1155.sol @@ -69,13 +69,7 @@ interface IERC1155 { @param _value Transfer amount @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` */ - function safeTransferFrom( - address _from, - address _to, - uint256 _id, - uint256 _value, - bytes calldata _data - ) external; + function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external; /** @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). @@ -115,10 +109,10 @@ interface IERC1155 { @param _ids ID of the Tokens @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ - function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) - external - view - returns (uint256[] memory); + function balanceOfBatch( + address[] calldata _owners, + uint256[] calldata _ids + ) external view returns (uint256[] memory); /** @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. diff --git a/contracts/eip/interface/IERC20.sol b/contracts/eip/interface/IERC20.sol index 6350dfc2c..246af8424 100644 --- a/contracts/eip/interface/IERC20.sol +++ b/contracts/eip/interface/IERC20.sol @@ -16,11 +16,7 @@ interface IERC20 { function approve(address spender, uint256 value) external returns (bool); - function transferFrom( - address from, - address to, - uint256 value - ) external returns (bool); + function transferFrom(address from, address to, uint256 value) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); diff --git a/contracts/eip/interface/IERC2981.sol b/contracts/eip/interface/IERC2981.sol index 79276a538..e25265b33 100644 --- a/contracts/eip/interface/IERC2981.sol +++ b/contracts/eip/interface/IERC2981.sol @@ -16,8 +16,8 @@ interface IERC2981 is IERC165 { * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of * exchange. The royalty amount is denominated and should be payed in that same unit of exchange. */ - function royaltyInfo(uint256 tokenId, uint256 salePrice) - external - view - returns (address receiver, uint256 royaltyAmount); + function royaltyInfo( + uint256 tokenId, + uint256 salePrice + ) external view returns (address receiver, uint256 royaltyAmount); } diff --git a/contracts/eip/interface/IERC721.sol b/contracts/eip/interface/IERC721.sol index 62fca471e..6bc14e70d 100644 --- a/contracts/eip/interface/IERC721.sol +++ b/contracts/eip/interface/IERC721.sol @@ -50,11 +50,7 @@ interface IERC721 { * * Emits a {Transfer} event. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) external; + function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. @@ -70,11 +66,7 @@ interface IERC721 { * * Emits a {Transfer} event. */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) external; + function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. @@ -132,10 +124,5 @@ interface IERC721 { * * Emits a {Transfer} event. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes calldata data - ) external; + function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } diff --git a/contracts/eip/queryable/ERC721AQueryableUpgradeable.sol b/contracts/eip/queryable/ERC721AQueryableUpgradeable.sol index 2018c8bc5..9eec8f7b6 100644 --- a/contracts/eip/queryable/ERC721AQueryableUpgradeable.sol +++ b/contracts/eip/queryable/ERC721AQueryableUpgradeable.sol @@ -48,13 +48,9 @@ abstract contract ERC721AQueryableUpgradeable is * - `burned = false` * - `extraData = ` */ - function explicitOwnershipOf(uint256 tokenId) - public - view - virtual - override - returns (TokenOwnership memory ownership) - { + function explicitOwnershipOf( + uint256 tokenId + ) public view virtual override returns (TokenOwnership memory ownership) { unchecked { if (tokenId >= _startTokenId()) { if (tokenId < _nextTokenId()) { @@ -111,11 +107,7 @@ abstract contract ERC721AQueryableUpgradeable is * Note that this function is optimized for smaller bytecode size over runtime gas, * since it is meant to be called off-chain. */ - function _tokensOfOwnerIn( - address owner, - uint256 start, - uint256 stop - ) private view returns (uint256[] memory) { + function _tokensOfOwnerIn(address owner, uint256 start, uint256 stop) private view returns (uint256[] memory) { unchecked { if (start >= stop) _revert(InvalidQueryRange.selector); // Set `start = max(start, _startTokenId())`. diff --git a/contracts/eip/queryable/ERC721AUpgradeable.sol b/contracts/eip/queryable/ERC721AUpgradeable.sol index 0e0bf0b75..af8bb4204 100644 --- a/contracts/eip/queryable/ERC721AUpgradeable.sol +++ b/contracts/eip/queryable/ERC721AUpgradeable.sol @@ -473,11 +473,9 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { /** * @dev Returns the storage slot and value for the approved address of `tokenId`. */ - function _getApprovedSlotAndAddress(uint256 tokenId) - private - view - returns (uint256 approvedAddressSlot, address approvedAddress) - { + function _getApprovedSlotAndAddress( + uint256 tokenId + ) private view returns (uint256 approvedAddressSlot, address approvedAddress) { ERC721AStorage.TokenApprovalRef storage tokenApproval = ERC721AStorage.layout()._tokenApprovals[tokenId]; // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId].value`. assembly { @@ -503,11 +501,7 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { * * Emits a {Transfer} event. */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) public payable virtual override { + function transferFrom(address from, address to, uint256 tokenId) public payable virtual override { uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId); // Mask `from` to the lower 160 bits, in case the upper bits somehow aren't clean. @@ -584,11 +578,7 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { /** * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) public payable virtual override { + function safeTransferFrom(address from, address to, uint256 tokenId) public payable virtual override { safeTransferFrom(from, to, tokenId, ""); } @@ -636,12 +626,7 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ - function _beforeTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token IDs @@ -659,12 +644,7 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { * - When `to` is zero, `tokenId` has been burned by `from`. * - `from` and `to` are never both zero. */ - function _afterTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) internal virtual {} + function _afterTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) internal virtual {} /** * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract. @@ -834,11 +814,7 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { * * Emits a {Transfer} event for each mint. */ - function _safeMint( - address to, - uint256 quantity, - bytes memory _data - ) internal virtual { + function _safeMint(address to, uint256 quantity, bytes memory _data) internal virtual { _mint(to, quantity); unchecked { @@ -887,11 +863,7 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { * * Emits an {Approval} event. */ - function _approve( - address to, - uint256 tokenId, - bool approvalCheck - ) internal virtual { + function _approve(address to, uint256 tokenId, bool approvalCheck) internal virtual { address owner = ownerOf(tokenId); if (approvalCheck && _msgSenderERC721A() != owner) @@ -1025,21 +997,13 @@ contract ERC721AUpgradeable is ERC721A__Initializable, IERC721AUpgradeable { * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ - function _extraData( - address from, - address to, - uint24 previousExtraData - ) internal view virtual returns (uint24) {} + function _extraData(address from, address to, uint24 previousExtraData) internal view virtual returns (uint24) {} /** * @dev Returns the next extra data for the packed ownership data. * The returned result is shifted into position. */ - function _nextExtraData( - address from, - address to, - uint256 prevOwnershipPacked - ) private view returns (uint256) { + function _nextExtraData(address from, address to, uint256 prevOwnershipPacked) private view returns (uint256) { uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA); return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA; } diff --git a/contracts/eip/queryable/IERC721AQueryable.sol b/contracts/eip/queryable/IERC721AQueryable.sol index f8a22f715..06fa1ca21 100644 --- a/contracts/eip/queryable/IERC721AQueryable.sol +++ b/contracts/eip/queryable/IERC721AQueryable.sol @@ -53,11 +53,7 @@ interface IERC721AQueryable is IERC721A { * * - `start` < `stop` */ - function tokensOfOwnerIn( - address owner, - uint256 start, - uint256 stop - ) external view returns (uint256[] memory); + function tokensOfOwnerIn(address owner, uint256 start, uint256 stop) external view returns (uint256[] memory); /** * @dev Returns an array of token IDs owned by `owner`. diff --git a/contracts/eip/queryable/IERC721AQueryableUpgradeable.sol b/contracts/eip/queryable/IERC721AQueryableUpgradeable.sol index c606624bb..ac52fb68c 100644 --- a/contracts/eip/queryable/IERC721AQueryableUpgradeable.sol +++ b/contracts/eip/queryable/IERC721AQueryableUpgradeable.sol @@ -53,11 +53,7 @@ interface IERC721AQueryableUpgradeable is IERC721AUpgradeable { * * - `start < stop` */ - function tokensOfOwnerIn( - address owner, - uint256 start, - uint256 stop - ) external view returns (uint256[] memory); + function tokensOfOwnerIn(address owner, uint256 start, uint256 stop) external view returns (uint256[] memory); /** * @dev Returns an array of token IDs owned by `owner`. diff --git a/contracts/eip/queryable/IERC721AUpgradeable.sol b/contracts/eip/queryable/IERC721AUpgradeable.sol index 15058be66..a2159f064 100644 --- a/contracts/eip/queryable/IERC721AUpgradeable.sol +++ b/contracts/eip/queryable/IERC721AUpgradeable.sol @@ -165,21 +165,12 @@ interface IERC721AUpgradeable { * * Emits a {Transfer} event. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId, - bytes calldata data - ) external payable; + function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external payable; /** * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`. */ - function safeTransferFrom( - address from, - address to, - uint256 tokenId - ) external payable; + function safeTransferFrom(address from, address to, uint256 tokenId) external payable; /** * @dev Transfers `tokenId` from `from` to `to`. @@ -197,11 +188,7 @@ interface IERC721AUpgradeable { * * Emits a {Transfer} event. */ - function transferFrom( - address from, - address to, - uint256 tokenId - ) external payable; + function transferFrom(address from, address to, uint256 tokenId) external payable; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. diff --git a/contracts/extension/BurnToClaim.sol b/contracts/extension/BurnToClaim.sol index 363a6880f..c9e6c1a21 100644 --- a/contracts/extension/BurnToClaim.sol +++ b/contracts/extension/BurnToClaim.sol @@ -27,11 +27,7 @@ abstract contract BurnToClaim is IBurnToClaim { burnToClaimInfo = _burnToClaimInfo; } - function verifyBurnToClaim( - address _tokenOwner, - uint256 _tokenId, - uint256 _quantity - ) public view virtual { + function verifyBurnToClaim(address _tokenOwner, uint256 _tokenId, uint256 _quantity) public view virtual { BurnToClaimInfo memory _burnToClaimInfo = burnToClaimInfo; if (_burnToClaimInfo.tokenType == IBurnToClaim.TokenType.ERC721) { @@ -50,11 +46,7 @@ abstract contract BurnToClaim is IBurnToClaim { // TODO: check if additional verification steps are required / override in main contract } - function _burnTokensOnOrigin( - address _tokenOwner, - uint256 _tokenId, - uint256 _quantity - ) internal virtual { + function _burnTokensOnOrigin(address _tokenOwner, uint256 _tokenId, uint256 _quantity) internal virtual { BurnToClaimInfo memory _burnToClaimInfo = burnToClaimInfo; if (_burnToClaimInfo.tokenType == IBurnToClaim.TokenType.ERC721) { ERC721Burnable(_burnToClaimInfo.originContractAddress).burn(_tokenId); diff --git a/contracts/extension/Drop.sol b/contracts/extension/Drop.sol index 08becaede..50ce350df 100644 --- a/contracts/extension/Drop.sol +++ b/contracts/extension/Drop.sol @@ -49,11 +49,10 @@ abstract contract Drop is IDrop { } /// @dev Lets a contract admin set claim conditions. - function setClaimConditions(ClaimCondition[] calldata _conditions, bool _resetClaimEligibility) - external - virtual - override - { + function setClaimConditions( + ClaimCondition[] calldata _conditions, + bool _resetClaimEligibility + ) external virtual override { if (!_canSetClaimConditions()) { revert("Not authorized"); } @@ -130,6 +129,10 @@ abstract contract Drop is IDrop { uint256 claimPrice = currentClaimPhase.pricePerToken; address claimCurrency = currentClaimPhase.currency; + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ if (currentClaimPhase.merkleRoot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( _allowlistProof.proof, @@ -192,11 +195,10 @@ abstract contract Drop is IDrop { } /// @dev Returns the supply claimed by claimer for a given conditionId. - function getSupplyClaimedByWallet(uint256 _conditionId, address _claimer) - public - view - returns (uint256 supplyClaimedByWallet) - { + function getSupplyClaimedByWallet( + uint256 _conditionId, + address _claimer + ) public view returns (uint256 supplyClaimedByWallet) { supplyClaimedByWallet = claimCondition.supplyClaimedByWallet[_conditionId][_claimer]; } @@ -242,10 +244,10 @@ abstract contract Drop is IDrop { ) internal virtual; /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - virtual - returns (uint256 startTokenId); + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal virtual returns (uint256 startTokenId); /// @dev Determine what wallet can update claim conditions function _canSetClaimConditions() internal view virtual returns (bool); diff --git a/contracts/extension/Drop1155.sol b/contracts/extension/Drop1155.sol index 090463b8e..dc11569e3 100644 --- a/contracts/extension/Drop1155.sol +++ b/contracts/extension/Drop1155.sol @@ -140,6 +140,10 @@ abstract contract Drop1155 is IDrop1155 { uint256 claimPrice = currentClaimPhase.pricePerToken; address claimCurrency = currentClaimPhase.currency; + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ if (currentClaimPhase.merkleRoot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( _allowlistProof.proof, @@ -199,11 +203,10 @@ abstract contract Drop1155 is IDrop1155 { } /// @dev Returns the claim condition at the given uid. - function getClaimConditionById(uint256 _tokenId, uint256 _conditionId) - external - view - returns (ClaimCondition memory condition) - { + function getClaimConditionById( + uint256 _tokenId, + uint256 _conditionId + ) external view returns (ClaimCondition memory condition) { condition = claimCondition[_tokenId].conditions[_conditionId]; } @@ -261,11 +264,7 @@ abstract contract Drop1155 is IDrop1155 { ) internal virtual; /// @dev Transfers the NFTs being claimed. - function transferTokensOnClaim( - address _to, - uint256 _tokenId, - uint256 _quantityBeingClaimed - ) internal virtual; + function transferTokensOnClaim(address _to, uint256 _tokenId, uint256 _quantityBeingClaimed) internal virtual; /// @dev Determine what wallet can update claim conditions function _canSetClaimConditions() internal view virtual returns (bool); diff --git a/contracts/extension/DropSinglePhase.sol b/contracts/extension/DropSinglePhase.sol index 928bacb35..8a2f59425 100644 --- a/contracts/extension/DropSinglePhase.sol +++ b/contracts/extension/DropSinglePhase.sol @@ -106,6 +106,10 @@ abstract contract DropSinglePhase is IDropSinglePhase { uint256 claimPrice = currentClaimPhase.pricePerToken; address claimCurrency = currentClaimPhase.currency; + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ if (currentClaimPhase.merkleRoot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( _allowlistProof.proof, @@ -195,10 +199,10 @@ abstract contract DropSinglePhase is IDropSinglePhase { ) internal virtual; /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - virtual - returns (uint256 startTokenId); + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal virtual returns (uint256 startTokenId); function _canSetClaimConditions() internal view virtual returns (bool); } diff --git a/contracts/extension/DropSinglePhase1155.sol b/contracts/extension/DropSinglePhase1155.sol index 64de27737..2950ed485 100644 --- a/contracts/extension/DropSinglePhase1155.sol +++ b/contracts/extension/DropSinglePhase1155.sol @@ -114,6 +114,10 @@ abstract contract DropSinglePhase1155 is IDropSinglePhase1155 { uint256 claimPrice = currentClaimPhase.pricePerToken; address claimCurrency = currentClaimPhase.currency; + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ if (currentClaimPhase.merkleRoot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( _allowlistProof.proof, @@ -205,11 +209,7 @@ abstract contract DropSinglePhase1155 is IDropSinglePhase1155 { ) internal virtual; /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim( - address _to, - uint256 _tokenId, - uint256 _quantityBeingClaimed - ) internal virtual; + function _transferTokensOnClaim(address _to, uint256 _tokenId, uint256 _quantityBeingClaimed) internal virtual; function _canSetClaimConditions() internal view virtual returns (bool); } diff --git a/contracts/extension/Initializable.sol b/contracts/extension/Initializable.sol index 7770f7d66..b91ab4621 100644 --- a/contracts/extension/Initializable.sol +++ b/contracts/extension/Initializable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache 2.0 pragma solidity ^0.8.0; -import "../lib/TWAddress.sol"; +import "../lib/Address.sol"; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed @@ -76,7 +76,7 @@ abstract contract Initializable { modifier initializer() { bool isTopLevelCall = !_initializing; require( - (isTopLevelCall && _initialized < 1) || (!TWAddress.isContract(address(this)) && _initialized == 1), + (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1), "Initializable: contract is already initialized" ); _initialized = 1; diff --git a/contracts/extension/LazyMintWithTier.sol b/contracts/extension/LazyMintWithTier.sol index 96234121b..50758b55b 100644 --- a/contracts/extension/LazyMintWithTier.sol +++ b/contracts/extension/LazyMintWithTier.sol @@ -72,11 +72,9 @@ abstract contract LazyMintWithTier is ILazyMintWithTier, BatchMintMetadata { } /// @notice Returns all metadata lazy minted for the given tier. - function _getMetadataInTier(string memory _tier) - private - view - returns (TokenRange[] memory tokens, string[] memory baseURIs) - { + function _getMetadataInTier( + string memory _tier + ) private view returns (TokenRange[] memory tokens, string[] memory baseURIs) { tokens = tokensInTier[_tier]; uint256 len = tokens.length; diff --git a/contracts/extension/Multicall.sol b/contracts/extension/Multicall.sol index dc9dd76d2..25e51cdf8 100644 --- a/contracts/extension/Multicall.sol +++ b/contracts/extension/Multicall.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; /// @author thirdweb -import "../lib/TWAddress.sol"; +import "../lib/Address.sol"; import "./interface/IMulticall.sol"; /** @@ -22,7 +22,7 @@ contract Multicall is IMulticall { function multicall(bytes[] calldata data) external virtual override returns (bytes[] memory results) { results = new bytes[](data.length); for (uint256 i = 0; i < data.length; i++) { - results[i] = TWAddress.functionDelegateCall(address(this), data[i]); + results[i] = Address.functionDelegateCall(address(this), data[i]); } return results; } diff --git a/contracts/extension/Permissions.sol b/contracts/extension/Permissions.sol index 66028cf36..9322b3d43 100644 --- a/contracts/extension/Permissions.sol +++ b/contracts/extension/Permissions.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; /// @author thirdweb import "./interface/IPermissions.sol"; -import "../lib/TWStrings.sol"; +import "../lib/Strings.sol"; /** * @title Permissions @@ -141,9 +141,9 @@ contract Permissions is IPermissions { string( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(account), 20), + Strings.toHexString(uint160(account), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ) ); @@ -157,9 +157,9 @@ contract Permissions is IPermissions { string( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(account), 20), + Strings.toHexString(uint160(account), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ) ); diff --git a/contracts/extension/Royalty.sol b/contracts/extension/Royalty.sol index b31f0ca41..cbe7ff28a 100644 --- a/contracts/extension/Royalty.sol +++ b/contracts/extension/Royalty.sol @@ -33,13 +33,10 @@ abstract contract Royalty is IRoyalty { * @return receiver Address of royalty recipient account. * @return royaltyAmount Royalty amount calculated at current royaltyBps value. */ - function royaltyInfo(uint256 tokenId, uint256 salePrice) - external - view - virtual - override - returns (address receiver, uint256 royaltyAmount) - { + function royaltyInfo( + uint256 tokenId, + uint256 salePrice + ) external view virtual override returns (address receiver, uint256 royaltyAmount) { (address recipient, uint256 bps) = getRoyaltyInfoForToken(tokenId); receiver = recipient; royaltyAmount = (salePrice * bps) / 10_000; @@ -104,11 +101,7 @@ abstract contract Royalty is IRoyalty { * @param _recipient Address to be set as royalty recipient for given token Id. * @param _bps Updated royalty bps for the token Id. */ - function setRoyaltyInfoForToken( - uint256 _tokenId, - address _recipient, - uint256 _bps - ) external override { + function setRoyaltyInfoForToken(uint256 _tokenId, address _recipient, uint256 _bps) external override { if (!_canSetRoyaltyInfo()) { revert("Not authorized"); } @@ -117,11 +110,7 @@ abstract contract Royalty is IRoyalty { } /// @dev Lets a contract admin set the royalty recipient and bps for a particular token Id. - function _setupRoyaltyInfoForToken( - uint256 _tokenId, - address _recipient, - uint256 _bps - ) internal { + function _setupRoyaltyInfoForToken(uint256 _tokenId, address _recipient, uint256 _bps) internal { if (_bps > 10_000) { revert("Exceeds max bps"); } diff --git a/contracts/extension/SharedMetadata.sol b/contracts/extension/SharedMetadata.sol index 0498ed187..72d244625 100644 --- a/contracts/extension/SharedMetadata.sol +++ b/contracts/extension/SharedMetadata.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.10; /// @author thirdweb -import "../lib/NFTMetadataRendererLib.sol"; +import "../lib/NFTMetadataRenderer.sol"; import "./interface/ISharedMetadata.sol"; import "../eip/interface/IERC4906.sol"; diff --git a/contracts/extension/SignatureAction.sol b/contracts/extension/SignatureAction.sol index 9c00cf1cc..4e857e870 100644 --- a/contracts/extension/SignatureAction.sol +++ b/contracts/extension/SignatureAction.sol @@ -18,12 +18,10 @@ abstract contract SignatureAction is EIP712, ISignatureAction { constructor() EIP712("SignatureAction", "1") {} /// @dev Verifies that a request is signed by an authorized account. - function verify(GenericRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + GenericRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !executed[_req.uid] && _isAuthorizedSigner(signer); } @@ -32,10 +30,10 @@ abstract contract SignatureAction is EIP712, ISignatureAction { function _isAuthorizedSigner(address _signer) internal view virtual returns (bool); /// @dev Verifies a request and marks the request as processed. - function _processRequest(GenericRequest calldata _req, bytes calldata _signature) - internal - returns (address signer) - { + function _processRequest( + GenericRequest calldata _req, + bytes calldata _signature + ) internal returns (address signer) { bool success; (success, signer) = verify(_req, _signature); diff --git a/contracts/extension/SignatureActionUpgradeable.sol b/contracts/extension/SignatureActionUpgradeable.sol index 84b78b63e..18b791151 100644 --- a/contracts/extension/SignatureActionUpgradeable.sol +++ b/contracts/extension/SignatureActionUpgradeable.sol @@ -22,12 +22,10 @@ abstract contract SignatureActionUpgradeable is EIP712Upgradeable, ISignatureAct function __SignatureAction_init_unchained() internal onlyInitializing {} /// @dev Verifies that a request is signed by an authorized account. - function verify(GenericRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + GenericRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !executed[_req.uid] && _isAuthorizedSigner(signer); } @@ -36,10 +34,10 @@ abstract contract SignatureActionUpgradeable is EIP712Upgradeable, ISignatureAct function _isAuthorizedSigner(address _signer) internal view virtual returns (bool); /// @dev Verifies a request and marks the request as processed. - function _processRequest(GenericRequest calldata _req, bytes calldata _signature) - internal - returns (address signer) - { + function _processRequest( + GenericRequest calldata _req, + bytes calldata _signature + ) internal returns (address signer) { bool success; (success, signer) = verify(_req, _signature); diff --git a/contracts/extension/SignatureMintERC1155.sol b/contracts/extension/SignatureMintERC1155.sol index 3885f9988..0d1c7aaf3 100644 --- a/contracts/extension/SignatureMintERC1155.sol +++ b/contracts/extension/SignatureMintERC1155.sol @@ -20,12 +20,10 @@ abstract contract SignatureMintERC1155 is EIP712, ISignatureMintERC1155 { constructor() EIP712("SignatureMintERC1155", "1") {} /// @dev Verifies that a mint request is signed by an account holding MINTER_ROLE (at the time of the function call). - function verify(MintRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + MintRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !minted[_req.uid] && _canSignMintRequest(signer); } diff --git a/contracts/extension/SignatureMintERC1155Upgradeable.sol b/contracts/extension/SignatureMintERC1155Upgradeable.sol index 2d83e890e..f4e2891b5 100644 --- a/contracts/extension/SignatureMintERC1155Upgradeable.sol +++ b/contracts/extension/SignatureMintERC1155Upgradeable.sol @@ -26,12 +26,10 @@ abstract contract SignatureMintERC1155Upgradeable is Initializable, EIP712Upgrad function __SignatureMintERC1155_init_unchained() internal onlyInitializing {} /// @dev Verifies that a mint request is signed by an account holding MINTER_ROLE (at the time of the function call). - function verify(MintRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + MintRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !minted[_req.uid] && _isAuthorizedSigner(signer); } diff --git a/contracts/extension/SignatureMintERC20.sol b/contracts/extension/SignatureMintERC20.sol index da29d15fd..fb561b8b3 100644 --- a/contracts/extension/SignatureMintERC20.sol +++ b/contracts/extension/SignatureMintERC20.sol @@ -20,12 +20,10 @@ abstract contract SignatureMintERC20 is EIP712, ISignatureMintERC20 { constructor() EIP712("SignatureMintERC20", "1") {} /// @dev Verifies that a mint request is signed by an account holding MINTER_ROLE (at the time of the function call). - function verify(MintRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + MintRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !minted[_req.uid] && _canSignMintRequest(signer); } diff --git a/contracts/extension/SignatureMintERC20Upgradeable.sol b/contracts/extension/SignatureMintERC20Upgradeable.sol index 758f3495b..d67b1eac5 100644 --- a/contracts/extension/SignatureMintERC20Upgradeable.sol +++ b/contracts/extension/SignatureMintERC20Upgradeable.sol @@ -27,12 +27,10 @@ abstract contract SignatureMintERC20Upgradeable is Initializable, EIP712Upgradea function __SignatureMintERC20_init_unchained(string memory) internal onlyInitializing {} /// @dev Verifies that a mint request is signed by an account holding MINTER_ROLE (at the time of the function call). - function verify(MintRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + MintRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !minted[_req.uid] && _isAuthorizedSigner(signer); } diff --git a/contracts/extension/SignatureMintERC721.sol b/contracts/extension/SignatureMintERC721.sol index 4e8fad30d..3b8d9b318 100644 --- a/contracts/extension/SignatureMintERC721.sol +++ b/contracts/extension/SignatureMintERC721.sol @@ -20,12 +20,10 @@ abstract contract SignatureMintERC721 is EIP712, ISignatureMintERC721 { constructor() EIP712("SignatureMintERC721", "1") {} /// @dev Verifies that a mint request is signed by an authorized account. - function verify(MintRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + MintRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !minted[_req.uid] && _canSignMintRequest(signer); } diff --git a/contracts/extension/SignatureMintERC721Upgradeable.sol b/contracts/extension/SignatureMintERC721Upgradeable.sol index 82cef82a4..0dd97a417 100644 --- a/contracts/extension/SignatureMintERC721Upgradeable.sol +++ b/contracts/extension/SignatureMintERC721Upgradeable.sol @@ -26,12 +26,10 @@ abstract contract SignatureMintERC721Upgradeable is Initializable, EIP712Upgrade function __SignatureMintERC721_init_unchained() internal onlyInitializing {} /// @dev Verifies that a mint request is signed by an account holding MINTER_ROLE (at the time of the function call). - function verify(MintRequest calldata _req, bytes calldata _signature) - public - view - override - returns (bool success, address signer) - { + function verify( + MintRequest calldata _req, + bytes calldata _signature + ) public view override returns (bool success, address signer) { signer = _recoverAddress(_req, _signature); success = !minted[_req.uid] && _isAuthorizedSigner(signer); } diff --git a/contracts/extension/SoulboundERC721A.sol b/contracts/extension/SoulboundERC721A.sol index 2a8995ada..7c8eba553 100644 --- a/contracts/extension/SoulboundERC721A.sol +++ b/contracts/extension/SoulboundERC721A.sol @@ -40,12 +40,7 @@ abstract contract SoulboundERC721A is PermissionsEnumerable { function _canRestrictTransfers() internal view virtual returns (bool); /// @dev See {ERC721A-_beforeTokenTransfers}. - function _beforeTokenTransfers( - address from, - address to, - uint256, - uint256 - ) internal virtual { + function _beforeTokenTransfers(address from, address to, uint256, uint256) internal virtual { // If transfers are restricted on the contract, we still want to allow burning and minting. if (!hasRole(TRANSFER_ROLE, address(0)) && from != address(0) && to != address(0)) { if (!hasRole(TRANSFER_ROLE, from) && !hasRole(TRANSFER_ROLE, to)) { diff --git a/contracts/extension/Staking1155.sol b/contracts/extension/Staking1155.sol index 499439471..28c1084d7 100644 --- a/contracts/extension/Staking1155.sol +++ b/contracts/extension/Staking1155.sol @@ -190,12 +190,10 @@ abstract contract Staking1155 is ReentrancyGuard, IStaking1155 { * @return _tokensStaked Amount of tokens staked for given token-id. * @return _rewards Available reward amount. */ - function getStakeInfoForToken(uint256 _tokenId, address _staker) - external - view - virtual - returns (uint256 _tokensStaked, uint256 _rewards) - { + function getStakeInfoForToken( + uint256 _tokenId, + address _staker + ) external view virtual returns (uint256 _tokensStaked, uint256 _rewards) { _tokensStaked = stakers[_tokenId][_staker].amountStaked; _rewards = _availableRewards(_tokenId, _staker); } @@ -208,15 +206,13 @@ abstract contract Staking1155 is ReentrancyGuard, IStaking1155 { * @return _tokenAmounts Amount of each token-id staked. * @return _totalRewards Total rewards available. */ - function getStakeInfo(address _staker) + function getStakeInfo( + address _staker + ) external view virtual - returns ( - uint256[] memory _tokensStaked, - uint256[] memory _tokenAmounts, - uint256 _totalRewards - ) + returns (uint256[] memory _tokensStaked, uint256[] memory _tokenAmounts, uint256 _totalRewards) { uint256[] memory _indexedTokens = indexedTokens; uint256[] memory _stakedAmounts = new uint256[](_indexedTokens.length); @@ -369,11 +365,7 @@ abstract contract Staking1155 is ReentrancyGuard, IStaking1155 { } /// @dev Set staking conditions, for a token-Id. - function _setStakingCondition( - uint256 _tokenId, - uint80 _timeUnit, - uint256 _rewardsPerUnitTime - ) internal virtual { + function _setStakingCondition(uint256 _tokenId, uint80 _timeUnit, uint256 _rewardsPerUnitTime) internal virtual { require(_timeUnit != 0, "time-unit can't be 0"); uint64 conditionId = nextConditionId[_tokenId]; diff --git a/contracts/extension/Staking1155Upgradeable.sol b/contracts/extension/Staking1155Upgradeable.sol index f4561f199..31d967efa 100644 --- a/contracts/extension/Staking1155Upgradeable.sol +++ b/contracts/extension/Staking1155Upgradeable.sol @@ -192,12 +192,10 @@ abstract contract Staking1155Upgradeable is ReentrancyGuardUpgradeable, IStaking * @return _tokensStaked Amount of tokens staked for given token-id. * @return _rewards Available reward amount. */ - function getStakeInfoForToken(uint256 _tokenId, address _staker) - external - view - virtual - returns (uint256 _tokensStaked, uint256 _rewards) - { + function getStakeInfoForToken( + uint256 _tokenId, + address _staker + ) external view virtual returns (uint256 _tokensStaked, uint256 _rewards) { _tokensStaked = stakers[_tokenId][_staker].amountStaked; _rewards = _availableRewards(_tokenId, _staker); } @@ -210,15 +208,13 @@ abstract contract Staking1155Upgradeable is ReentrancyGuardUpgradeable, IStaking * @return _tokenAmounts Amount of each token-id staked. * @return _totalRewards Total rewards available. */ - function getStakeInfo(address _staker) + function getStakeInfo( + address _staker + ) external view virtual - returns ( - uint256[] memory _tokensStaked, - uint256[] memory _tokenAmounts, - uint256 _totalRewards - ) + returns (uint256[] memory _tokensStaked, uint256[] memory _tokenAmounts, uint256 _totalRewards) { uint256[] memory _indexedTokens = indexedTokens; uint256[] memory _stakedAmounts = new uint256[](_indexedTokens.length); @@ -369,11 +365,7 @@ abstract contract Staking1155Upgradeable is ReentrancyGuardUpgradeable, IStaking } /// @dev Set staking conditions, for a token-Id. - function _setStakingCondition( - uint256 _tokenId, - uint80 _timeUnit, - uint256 _rewardsPerUnitTime - ) internal virtual { + function _setStakingCondition(uint256 _tokenId, uint80 _timeUnit, uint256 _rewardsPerUnitTime) internal virtual { require(_timeUnit != 0, "time-unit can't be 0"); uint64 conditionId = nextConditionId[_tokenId]; diff --git a/contracts/extension/Staking20.sol b/contracts/extension/Staking20.sol index dd953aef3..ab766b7f4 100644 --- a/contracts/extension/Staking20.sol +++ b/contracts/extension/Staking20.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.11; import "../external-deps/openzeppelin/security/ReentrancyGuard.sol"; import "../external-deps/openzeppelin/utils/math/SafeMath.sol"; import "../eip/interface/IERC20.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; import "./interface/IStaking20.sol"; @@ -271,11 +271,7 @@ abstract contract Staking20 is ReentrancyGuard, IStaking20 { } /// @dev Set staking conditions. - function _setStakingCondition( - uint80 _timeUnit, - uint256 _numerator, - uint256 _denominator - ) internal virtual { + function _setStakingCondition(uint80 _timeUnit, uint256 _numerator, uint256 _denominator) internal virtual { require(_denominator != 0, "divide by 0"); require(_timeUnit != 0, "time-unit can't be 0"); uint256 conditionId = nextConditionId; @@ -319,9 +315,9 @@ abstract contract Staking20 is ReentrancyGuard, IStaking20 { _rewards = noOverflowProduct && noOverflowSum ? rewardsSum : _rewards; } - (, _rewards) = SafeMath.tryMul(_rewards, 10**rewardTokenDecimals); + (, _rewards) = SafeMath.tryMul(_rewards, 10 ** rewardTokenDecimals); - _rewards /= (10**stakingTokenDecimals); + _rewards /= (10 ** stakingTokenDecimals); } /*//////////////////////////////////////////////////////////////////// diff --git a/contracts/extension/Staking20Upgradeable.sol b/contracts/extension/Staking20Upgradeable.sol index 647f7853f..c83c16b1a 100644 --- a/contracts/extension/Staking20Upgradeable.sol +++ b/contracts/extension/Staking20Upgradeable.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "../external-deps/openzeppelin/utils/math/SafeMath.sol"; import "../eip/interface/IERC20.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; import "./interface/IStaking20.sol"; @@ -278,11 +278,7 @@ abstract contract Staking20Upgradeable is ReentrancyGuardUpgradeable, IStaking20 } /// @dev Set staking conditions. - function _setStakingCondition( - uint80 _timeUnit, - uint256 _numerator, - uint256 _denominator - ) internal virtual { + function _setStakingCondition(uint80 _timeUnit, uint256 _numerator, uint256 _denominator) internal virtual { require(_denominator != 0, "divide by 0"); require(_timeUnit != 0, "time-unit can't be 0"); uint256 conditionId = nextConditionId; @@ -326,9 +322,9 @@ abstract contract Staking20Upgradeable is ReentrancyGuardUpgradeable, IStaking20 _rewards = noOverflowProduct && noOverflowSum ? rewardsSum : _rewards; } - (, _rewards) = SafeMath.tryMul(_rewards, 10**rewardTokenDecimals); + (, _rewards) = SafeMath.tryMul(_rewards, 10 ** rewardTokenDecimals); - _rewards /= (10**stakingTokenDecimals); + _rewards /= (10 ** stakingTokenDecimals); } /*//////////////////////////////////////////////////////////////////// diff --git a/contracts/extension/Staking721.sol b/contracts/extension/Staking721.sol index bda6c73c3..38d786511 100644 --- a/contracts/extension/Staking721.sol +++ b/contracts/extension/Staking721.sol @@ -133,12 +133,9 @@ abstract contract Staking721 is ReentrancyGuard, IStaking721 { * @return _tokensStaked List of token-ids staked by staker. * @return _rewards Available reward amount. */ - function getStakeInfo(address _staker) - external - view - virtual - returns (uint256[] memory _tokensStaked, uint256 _rewards) - { + function getStakeInfo( + address _staker + ) external view virtual returns (uint256[] memory _tokensStaked, uint256 _rewards) { uint256[] memory _indexedTokens = indexedTokens; bool[] memory _isStakerToken = new bool[](_indexedTokens.length); uint256 indexedTokenCount = _indexedTokens.length; diff --git a/contracts/extension/Staking721Upgradeable.sol b/contracts/extension/Staking721Upgradeable.sol index bf1cdcc91..a5719e641 100644 --- a/contracts/extension/Staking721Upgradeable.sol +++ b/contracts/extension/Staking721Upgradeable.sol @@ -135,12 +135,9 @@ abstract contract Staking721Upgradeable is ReentrancyGuardUpgradeable, IStaking7 * @return _tokensStaked List of token-ids staked by staker. * @return _rewards Available reward amount. */ - function getStakeInfo(address _staker) - external - view - virtual - returns (uint256[] memory _tokensStaked, uint256 _rewards) - { + function getStakeInfo( + address _staker + ) external view virtual returns (uint256[] memory _tokensStaked, uint256 _rewards) { uint256[] memory _indexedTokens = indexedTokens; bool[] memory _isStakerToken = new bool[](_indexedTokens.length); uint256 indexedTokenCount = _indexedTokens.length; diff --git a/contracts/extension/TokenBundle.sol b/contracts/extension/TokenBundle.sol index 1938c0e30..76d773fca 100644 --- a/contracts/extension/TokenBundle.sol +++ b/contracts/extension/TokenBundle.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; /// @author thirdweb import "./interface/ITokenBundle.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); @@ -81,11 +81,7 @@ abstract contract TokenBundle is ITokenBundle { } /// @dev Lets the calling contract update a token in a bundle for a unique bundle id and index. - function _updateTokenInBundle( - Token memory _tokenToBind, - uint256 _bundleId, - uint256 _index - ) internal { + function _updateTokenInBundle(Token memory _tokenToBind, uint256 _bundleId, uint256 _index) internal { require(_index < bundle[_bundleId].count, "index DNE"); _checkTokenType(_tokenToBind); bundle[_bundleId].tokens[_index] = _tokenToBind; diff --git a/contracts/extension/TokenStore.sol b/contracts/extension/TokenStore.sol index 85e8ba458..14b2042ba 100644 --- a/contracts/extension/TokenStore.sol +++ b/contracts/extension/TokenStore.sol @@ -14,7 +14,7 @@ import "../external-deps/openzeppelin/utils/ERC721/ERC721Holder.sol"; // ========== Internal imports ========== import { TokenBundle, ITokenBundle } from "./TokenBundle.sol"; -import "../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../lib/CurrencyTransferLib.sol"; /** * @title Token Store @@ -58,11 +58,7 @@ contract TokenStore is TokenBundle, ERC721Holder, ERC1155Holder { } /// @dev Transfers an arbitrary ERC20 / ERC721 / ERC1155 token. - function _transferToken( - address _from, - address _to, - Token memory _token - ) internal { + function _transferToken(address _from, address _to, Token memory _token) internal { if (_token.tokenType == TokenType.ERC20) { CurrencyTransferLib.transferCurrencyWithWrapper( _token.assetContract, @@ -79,11 +75,7 @@ contract TokenStore is TokenBundle, ERC721Holder, ERC1155Holder { } /// @dev Transfers multiple arbitrary ERC20 / ERC721 / ERC1155 tokens. - function _transferTokenBatch( - address _from, - address _to, - Token[] memory _tokens - ) internal { + function _transferTokenBatch(address _from, address _to, Token[] memory _tokens) internal { uint256 nativeTokenValue; for (uint256 i = 0; i < _tokens.length; i += 1) { if (_tokens[i].assetContract == CurrencyTransferLib.NATIVE_TOKEN && _to == address(this)) { diff --git a/contracts/extension/interface/IAccountPermissions.sol b/contracts/extension/interface/IAccountPermissions.sol index 6c0a670db..0685a8301 100644 --- a/contracts/extension/interface/IAccountPermissions.sol +++ b/contracts/extension/interface/IAccountPermissions.sol @@ -100,10 +100,10 @@ interface IAccountPermissions { function getAllAdmins() external view returns (address[] memory admins); /// @dev Verifies that a request is signed by an authorized account. - function verifySignerPermissionRequest(SignerPermissionRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verifySignerPermissionRequest( + SignerPermissionRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /*/////////////////////////////////////////////////////////////// External functions diff --git a/contracts/extension/interface/IBurnableERC1155.sol b/contracts/extension/interface/IBurnableERC1155.sol index 7ab72fc2f..b4170c105 100644 --- a/contracts/extension/interface/IBurnableERC1155.sol +++ b/contracts/extension/interface/IBurnableERC1155.sol @@ -9,16 +9,8 @@ pragma solidity ^0.8.0; */ interface IBurnableERC1155 { /// @dev Lets a token owner burn the tokens they own (i.e. destroy for good) - function burn( - address account, - uint256 id, - uint256 value - ) external; + function burn(address account, uint256 id, uint256 value) external; /// @dev Lets a token owner burn multiple tokens they own at once (i.e. destroy for good) - function burnBatch( - address account, - uint256[] memory ids, - uint256[] memory values - ) external; + function burnBatch(address account, uint256[] memory ids, uint256[] memory values) external; } diff --git a/contracts/extension/interface/IClaimConditionsSinglePhase.sol b/contracts/extension/interface/IClaimConditionsSinglePhase.sol index 7f0e0b832..3b3d6d1ae 100644 --- a/contracts/extension/interface/IClaimConditionsSinglePhase.sol +++ b/contracts/extension/interface/IClaimConditionsSinglePhase.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; /// @author thirdweb -import "../../lib/TWBitMaps.sol"; +import "../../lib/BitMaps.sol"; import "./IClaimCondition.sol"; /** diff --git a/contracts/extension/interface/IClaimableERC1155.sol b/contracts/extension/interface/IClaimableERC1155.sol index eb83058f9..2afb26e29 100644 --- a/contracts/extension/interface/IClaimableERC1155.sol +++ b/contracts/extension/interface/IClaimableERC1155.sol @@ -23,11 +23,7 @@ interface IClaimableERC1155 { * @param _tokenId The tokenId of the lazy minted NFT to mint. * @param _quantity The number of tokens to mint. */ - function claim( - address _receiver, - uint256 _tokenId, - uint256 _quantity - ) external payable; + function claim(address _receiver, uint256 _tokenId, uint256 _quantity) external payable; /** * @notice Override this function to add logic for claim verification, based on conditions @@ -39,9 +35,5 @@ interface IClaimableERC1155 { * @param _tokenId The tokenId of the lazy minted NFT to mint. * @param _quantity The number of NFTs being claimed. */ - function verifyClaim( - address _claimer, - uint256 _tokenId, - uint256 _quantity - ) external view; + function verifyClaim(address _claimer, uint256 _tokenId, uint256 _quantity) external view; } diff --git a/contracts/extension/interface/IDrop1155.sol b/contracts/extension/interface/IDrop1155.sol index 2a18da17e..4fe60232e 100644 --- a/contracts/extension/interface/IDrop1155.sol +++ b/contracts/extension/interface/IDrop1155.sol @@ -71,9 +71,5 @@ interface IDrop1155 is IClaimConditionMultiPhase { * in the new claim conditions being set. * */ - function setClaimConditions( - uint256 tokenId, - ClaimCondition[] calldata phases, - bool resetClaimEligibility - ) external; + function setClaimConditions(uint256 tokenId, ClaimCondition[] calldata phases, bool resetClaimEligibility) external; } diff --git a/contracts/extension/interface/IDropSinglePhase1155.sol b/contracts/extension/interface/IDropSinglePhase1155.sol index dd1d8f065..8c6321095 100644 --- a/contracts/extension/interface/IDropSinglePhase1155.sol +++ b/contracts/extension/interface/IDropSinglePhase1155.sol @@ -70,9 +70,5 @@ interface IDropSinglePhase1155 is IClaimCondition { * * @param tokenId The tokenId for which to set the relevant claim condition. */ - function setClaimConditions( - uint256 tokenId, - ClaimCondition calldata phase, - bool resetClaimEligibility - ) external; + function setClaimConditions(uint256 tokenId, ClaimCondition calldata phase, bool resetClaimEligibility) external; } diff --git a/contracts/extension/interface/IMintableERC1155.sol b/contracts/extension/interface/IMintableERC1155.sol index e54223b6a..7b45769f6 100644 --- a/contracts/extension/interface/IMintableERC1155.sol +++ b/contracts/extension/interface/IMintableERC1155.sol @@ -20,10 +20,5 @@ interface IMintableERC1155 { * @param amount The number of copies of the NFT to mint. * */ - function mintTo( - address to, - uint256 tokenId, - string calldata uri, - uint256 amount - ) external; + function mintTo(address to, uint256 tokenId, string calldata uri, uint256 amount) external; } diff --git a/contracts/extension/interface/IOperatorFilterRegistry.sol b/contracts/extension/interface/IOperatorFilterRegistry.sol index 3ed0690ae..4b756a17c 100644 --- a/contracts/extension/interface/IOperatorFilterRegistry.sol +++ b/contracts/extension/interface/IOperatorFilterRegistry.sol @@ -14,29 +14,13 @@ interface IOperatorFilterRegistry { function unregister(address addr) external; - function updateOperator( - address registrant, - address operator, - bool filtered - ) external; - - function updateOperators( - address registrant, - address[] calldata operators, - bool filtered - ) external; - - function updateCodeHash( - address registrant, - bytes32 codehash, - bool filtered - ) external; - - function updateCodeHashes( - address registrant, - bytes32[] calldata codeHashes, - bool filtered - ) external; + function updateOperator(address registrant, address operator, bool filtered) external; + + function updateOperators(address registrant, address[] calldata operators, bool filtered) external; + + function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external; + + function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external; function subscribe(address registrant, address registrantToSubscribe) external; diff --git a/contracts/extension/interface/IRoyalty.sol b/contracts/extension/interface/IRoyalty.sol index 4651098ab..f87cdff9c 100644 --- a/contracts/extension/interface/IRoyalty.sol +++ b/contracts/extension/interface/IRoyalty.sol @@ -26,11 +26,7 @@ interface IRoyalty is IERC2981 { function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) external; /// @dev Lets a module admin set the royalty recipient for a particular token Id. - function setRoyaltyInfoForToken( - uint256 tokenId, - address recipient, - uint256 bps - ) external; + function setRoyaltyInfoForToken(uint256 tokenId, address recipient, uint256 bps) external; /// @dev Returns the royalty recipient for a particular token Id. function getRoyaltyInfoForToken(uint256 tokenId) external view returns (address, uint16); diff --git a/contracts/extension/interface/ISignatureAction.sol b/contracts/extension/interface/ISignatureAction.sol index 08e981fd7..dd98f5d49 100644 --- a/contracts/extension/interface/ISignatureAction.sol +++ b/contracts/extension/interface/ISignatureAction.sol @@ -37,8 +37,8 @@ interface ISignatureAction { * @return success Whether the payload is signed by the authorized wallet. * @return signer The address of the signer. */ - function verify(GenericRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verify( + GenericRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); } diff --git a/contracts/extension/interface/ISignatureMintERC1155.sol b/contracts/extension/interface/ISignatureMintERC1155.sol index 3d2153edd..9f283eff0 100644 --- a/contracts/extension/interface/ISignatureMintERC1155.sol +++ b/contracts/extension/interface/ISignatureMintERC1155.sol @@ -59,10 +59,10 @@ interface ISignatureMintERC1155 { * * returns (success, signer) Result of verification and the recovered address. */ - function verify(MintRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verify( + MintRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /** * @notice Mints tokens according to the provided mint request. @@ -70,8 +70,8 @@ interface ISignatureMintERC1155 { * @param req The payload / mint request. * @param signature The signature produced by an account signing the mint request. */ - function mintWithSignature(MintRequest calldata req, bytes calldata signature) - external - payable - returns (address signer); + function mintWithSignature( + MintRequest calldata req, + bytes calldata signature + ) external payable returns (address signer); } diff --git a/contracts/extension/interface/ISignatureMintERC20.sol b/contracts/extension/interface/ISignatureMintERC20.sol index d1739a9e3..63aabbc33 100644 --- a/contracts/extension/interface/ISignatureMintERC20.sol +++ b/contracts/extension/interface/ISignatureMintERC20.sol @@ -46,10 +46,10 @@ interface ISignatureMintERC20 { * * returns (success, signer) Result of verification and the recovered address. */ - function verify(MintRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verify( + MintRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /** * @notice Mints tokens according to the provided mint request. @@ -57,8 +57,8 @@ interface ISignatureMintERC20 { * @param req The payload / mint request. * @param signature The signature produced by an account signing the mint request. */ - function mintWithSignature(MintRequest calldata req, bytes calldata signature) - external - payable - returns (address signer); + function mintWithSignature( + MintRequest calldata req, + bytes calldata signature + ) external payable returns (address signer); } diff --git a/contracts/extension/interface/ISignatureMintERC721.sol b/contracts/extension/interface/ISignatureMintERC721.sol index b67ff0a36..0478adae1 100644 --- a/contracts/extension/interface/ISignatureMintERC721.sol +++ b/contracts/extension/interface/ISignatureMintERC721.sol @@ -57,10 +57,10 @@ interface ISignatureMintERC721 { * * returns (success, signer) Result of verification and the recovered address. */ - function verify(MintRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verify( + MintRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /** * @notice Mints tokens according to the provided mint request. @@ -68,8 +68,8 @@ interface ISignatureMintERC721 { * @param req The payload / mint request. * @param signature The signature produced by an account signing the mint request. */ - function mintWithSignature(MintRequest calldata req, bytes calldata signature) - external - payable - returns (address signer); + function mintWithSignature( + MintRequest calldata req, + bytes calldata signature + ) external payable returns (address signer); } diff --git a/contracts/extension/interface/IStaking1155.sol b/contracts/extension/interface/IStaking1155.sol index 73e34e6b5..27351e332 100644 --- a/contracts/extension/interface/IStaking1155.sol +++ b/contracts/extension/interface/IStaking1155.sol @@ -94,22 +94,17 @@ interface IStaking1155 { * @param tokenId Staked token Id. * @param staker Address for which to calculated rewards. */ - function getStakeInfoForToken(uint256 tokenId, address staker) - external - view - returns (uint256 _tokensStaked, uint256 _rewards); + function getStakeInfoForToken( + uint256 tokenId, + address staker + ) external view returns (uint256 _tokensStaked, uint256 _rewards); /** * @notice View amount staked and total rewards for a user. * * @param staker Address for which to calculated rewards. */ - function getStakeInfo(address staker) - external - view - returns ( - uint256[] memory _tokensStaked, - uint256[] memory _tokenAmounts, - uint256 _totalRewards - ); + function getStakeInfo( + address staker + ) external view returns (uint256[] memory _tokensStaked, uint256[] memory _tokenAmounts, uint256 _totalRewards); } diff --git a/contracts/extension/plugin/PermissionsLogic.sol b/contracts/extension/plugin/PermissionsLogic.sol index af7bdc0bb..9206870bd 100644 --- a/contracts/extension/plugin/PermissionsLogic.sol +++ b/contracts/extension/plugin/PermissionsLogic.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.0; import "../interface/IPermissions.sol"; import "./PermissionsStorage.sol"; -import "../../lib/TWStrings.sol"; +import "../../lib/Strings.sol"; /** * @author thirdweb.com @@ -147,9 +147,9 @@ contract PermissionsLogic is IPermissions { string( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(account), 20), + Strings.toHexString(uint160(account), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ) ); @@ -163,9 +163,9 @@ contract PermissionsLogic is IPermissions { string( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(account), 20), + Strings.toHexString(uint160(account), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ) ); diff --git a/contracts/extension/upgradeable/AccountPermissions.sol b/contracts/extension/upgradeable/AccountPermissions.sol index bc9d9918a..63332489c 100644 --- a/contracts/extension/upgradeable/AccountPermissions.sol +++ b/contracts/extension/upgradeable/AccountPermissions.sol @@ -138,12 +138,10 @@ abstract contract AccountPermissions is IAccountPermissions, EIP712 { } /// @dev Verifies that a request is signed by an authorized account. - function verifySignerPermissionRequest(SignerPermissionRequest calldata req, bytes calldata signature) - public - view - virtual - returns (bool success, address signer) - { + function verifySignerPermissionRequest( + SignerPermissionRequest calldata req, + bytes calldata signature + ) public view virtual returns (bool success, address signer) { signer = _recoverAddress(_encodeRequest(req), signature); success = !_accountPermissionsStorage().executed[req.uid] && isAdmin(signer); } diff --git a/contracts/extension/upgradeable/BurnToClaim.sol b/contracts/extension/upgradeable/BurnToClaim.sol index 754e8a240..8d3736062 100644 --- a/contracts/extension/upgradeable/BurnToClaim.sol +++ b/contracts/extension/upgradeable/BurnToClaim.sol @@ -45,11 +45,7 @@ abstract contract BurnToClaim is IBurnToClaim { } /// @notice Verifies an attempt to burn tokens to claim new tokens. - function verifyBurnToClaim( - address _tokenOwner, - uint256 _tokenId, - uint256 _quantity - ) public view virtual { + function verifyBurnToClaim(address _tokenOwner, uint256 _tokenId, uint256 _quantity) public view virtual { BurnToClaimInfo memory _burnToClaimInfo = getBurnToClaimInfo(); if (_burnToClaimInfo.tokenType == IBurnToClaim.TokenType.ERC721) { @@ -67,11 +63,7 @@ abstract contract BurnToClaim is IBurnToClaim { } /// @dev Burns tokens to claim new tokens. - function _burnTokensOnOrigin( - address _tokenOwner, - uint256 _tokenId, - uint256 _quantity - ) internal virtual { + function _burnTokensOnOrigin(address _tokenOwner, uint256 _tokenId, uint256 _quantity) internal virtual { BurnToClaimInfo memory _burnToClaimInfo = getBurnToClaimInfo(); if (_burnToClaimInfo.tokenType == IBurnToClaim.TokenType.ERC721) { diff --git a/contracts/extension/upgradeable/Drop.sol b/contracts/extension/upgradeable/Drop.sol index 4be4ff3fe..4d701a204 100644 --- a/contracts/extension/upgradeable/Drop.sol +++ b/contracts/extension/upgradeable/Drop.sol @@ -64,11 +64,10 @@ abstract contract Drop is IDrop { } /// @dev Lets a contract admin set claim conditions. - function setClaimConditions(ClaimCondition[] calldata _conditions, bool _resetClaimEligibility) - external - virtual - override - { + function setClaimConditions( + ClaimCondition[] calldata _conditions, + bool _resetClaimEligibility + ) external virtual override { if (!_canSetClaimConditions()) { revert("Not authorized"); } @@ -145,6 +144,10 @@ abstract contract Drop is IDrop { uint256 claimPrice = currentClaimPhase.pricePerToken; address claimCurrency = currentClaimPhase.currency; + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ if (currentClaimPhase.merkleRoot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( _allowlistProof.proof, @@ -211,11 +214,10 @@ abstract contract Drop is IDrop { } /// @dev Returns the supply claimed by claimer for a given conditionId. - function getSupplyClaimedByWallet(uint256 _conditionId, address _claimer) - public - view - returns (uint256 supplyClaimedByWallet) - { + function getSupplyClaimedByWallet( + uint256 _conditionId, + address _claimer + ) public view returns (uint256 supplyClaimedByWallet) { supplyClaimedByWallet = _dropStorage().claimCondition.supplyClaimedByWallet[_conditionId][_claimer]; } @@ -266,10 +268,10 @@ abstract contract Drop is IDrop { ) internal virtual; /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - virtual - returns (uint256 startTokenId); + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal virtual returns (uint256 startTokenId); /// @dev Determine what wallet can update claim conditions function _canSetClaimConditions() internal view virtual returns (bool); diff --git a/contracts/extension/upgradeable/Initializable.sol b/contracts/extension/upgradeable/Initializable.sol index faa5961e9..dfa3f4bcd 100644 --- a/contracts/extension/upgradeable/Initializable.sol +++ b/contracts/extension/upgradeable/Initializable.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache 2.0 pragma solidity ^0.8.0; -import "../../lib/TWAddress.sol"; +import "../../lib/Address.sol"; library InitStorage { /// @custom:storage-location erc7201:init.storage @@ -39,7 +39,7 @@ abstract contract Initializable { bool isTopLevelCall = !_initializing; require( - (isTopLevelCall && _initialized < 1) || (!TWAddress.isContract(address(this)) && _initialized == 1), + (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1), "Initializable: contract is already initialized" ); _initStorage().initialized = 1; diff --git a/contracts/extension/upgradeable/Permissions.sol b/contracts/extension/upgradeable/Permissions.sol index 6cac1243d..c1fa7925e 100644 --- a/contracts/extension/upgradeable/Permissions.sol +++ b/contracts/extension/upgradeable/Permissions.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; /// @author thirdweb import "../interface/IPermissions.sol"; -import "../../lib/TWStrings.sol"; +import "../../lib/Strings.sol"; /** * @title Permissions @@ -157,9 +157,9 @@ contract Permissions is IPermissions { string( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(account), 20), + Strings.toHexString(uint160(account), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ) ); @@ -173,9 +173,9 @@ contract Permissions is IPermissions { string( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(account), 20), + Strings.toHexString(uint160(account), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ) ); diff --git a/contracts/extension/upgradeable/Royalty.sol b/contracts/extension/upgradeable/Royalty.sol index 9065090e6..b8cadcd02 100644 --- a/contracts/extension/upgradeable/Royalty.sol +++ b/contracts/extension/upgradeable/Royalty.sol @@ -47,13 +47,10 @@ abstract contract Royalty is IRoyalty { * @return receiver Address of royalty recipient account. * @return royaltyAmount Royalty amount calculated at current royaltyBps value. */ - function royaltyInfo(uint256 tokenId, uint256 salePrice) - external - view - virtual - override - returns (address receiver, uint256 royaltyAmount) - { + function royaltyInfo( + uint256 tokenId, + uint256 salePrice + ) external view virtual override returns (address receiver, uint256 royaltyAmount) { (address recipient, uint256 bps) = getRoyaltyInfoForToken(tokenId); receiver = recipient; royaltyAmount = (salePrice * bps) / 10_000; @@ -118,11 +115,7 @@ abstract contract Royalty is IRoyalty { * @param _recipient Address to be set as royalty recipient for given token Id. * @param _bps Updated royalty bps for the token Id. */ - function setRoyaltyInfoForToken( - uint256 _tokenId, - address _recipient, - uint256 _bps - ) external override { + function setRoyaltyInfoForToken(uint256 _tokenId, address _recipient, uint256 _bps) external override { if (!_canSetRoyaltyInfo()) { revert("Not authorized"); } @@ -131,11 +124,7 @@ abstract contract Royalty is IRoyalty { } /// @dev Lets a contract admin set the royalty recipient and bps for a particular token Id. - function _setupRoyaltyInfoForToken( - uint256 _tokenId, - address _recipient, - uint256 _bps - ) internal { + function _setupRoyaltyInfoForToken(uint256 _tokenId, address _recipient, uint256 _bps) internal { if (_bps > 10_000) { revert("Exceeds max bps"); } diff --git a/contracts/extension/upgradeable/RulesEngine.sol b/contracts/extension/upgradeable/RulesEngine.sol index e75133db0..93fa215b9 100644 --- a/contracts/extension/upgradeable/RulesEngine.sol +++ b/contracts/extension/upgradeable/RulesEngine.sol @@ -117,7 +117,7 @@ abstract contract RulesEngine is IRulesEngine { if (_rule.tokenType == TokenType.ERC20) { // NOTE: We are rounding down the ERC20 balance to the nearest full unit. - uint256 unit = 10**IERC20Metadata(_rule.token).decimals(); + uint256 unit = 10 ** IERC20Metadata(_rule.token).decimals(); balance = IERC20(_rule.token).balanceOf(_tokenOwner) / unit; } else if (_rule.tokenType == TokenType.ERC721) { balance = IERC721(_rule.token).balanceOf(_tokenOwner); diff --git a/contracts/extension/upgradeable/SharedMetadataBatch.sol b/contracts/extension/upgradeable/SharedMetadataBatch.sol index 1b8cbdd52..c4001864d 100644 --- a/contracts/extension/upgradeable/SharedMetadataBatch.sol +++ b/contracts/extension/upgradeable/SharedMetadataBatch.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.11; /// @author thirdweb -import "../../lib/NFTMetadataRendererLib.sol"; +import "../../lib/NFTMetadataRenderer.sol"; import "../interface/ISharedMetadataBatch.sol"; import "../../external-deps/openzeppelin/utils/EnumerableSet.sol"; diff --git a/contracts/external-deps/chainlink/VRFV2WrapperConsumerBase.sol b/contracts/external-deps/chainlink/VRFV2WrapperConsumerBase.sol index c5e2f7e68..f89a39c1a 100644 --- a/contracts/external-deps/chainlink/VRFV2WrapperConsumerBase.sol +++ b/contracts/external-deps/chainlink/VRFV2WrapperConsumerBase.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import "@chainlink/contracts/src/v0.8/interfaces/LinkTokenInterface.sol"; -import "@chainlink/contracts/src/v0.8/interfaces/VRFV2WrapperInterface.sol"; +import "@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.sol"; +import "@chainlink/contracts/src/v0.8/vrf/interfaces/VRFV2WrapperInterface.sol"; /** ******************************************************************************* * @notice Interface for contracts using VRF randomness through the VRF V2 wrapper diff --git a/contracts/external-deps/openzeppelin/ERC1155PresetUpgradeable.sol b/contracts/external-deps/openzeppelin/ERC1155PresetUpgradeable.sol index 7f184a9c3..e3163c3e2 100644 --- a/contracts/external-deps/openzeppelin/ERC1155PresetUpgradeable.sol +++ b/contracts/external-deps/openzeppelin/ERC1155PresetUpgradeable.sol @@ -74,12 +74,7 @@ contract ERC1155PresetUpgradeable is * * - the caller must have the `MINTER_ROLE`. */ - function mint( - address to, - uint256 id, - uint256 amount, - bytes memory data - ) public virtual { + function mint(address to, uint256 id, uint256 amount, bytes memory data) public virtual { require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role"); _mint(to, id, amount, data); @@ -88,12 +83,7 @@ contract ERC1155PresetUpgradeable is /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}. */ - function mintBatch( - address to, - uint256[] memory ids, - uint256[] memory amounts, - bytes memory data - ) public virtual { + function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public virtual { require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role"); _mintBatch(to, ids, amounts, data); @@ -130,7 +120,9 @@ contract ERC1155PresetUpgradeable is /** * @dev See {IERC165-supportsInterface}. */ - function supportsInterface(bytes4 interfaceId) + function supportsInterface( + bytes4 interfaceId + ) public view virtual diff --git a/contracts/external-deps/openzeppelin/finance/PaymentSplitterUpgradeable.sol b/contracts/external-deps/openzeppelin/finance/PaymentSplitterUpgradeable.sol index 8bb306ea1..c60b0048d 100644 --- a/contracts/external-deps/openzeppelin/finance/PaymentSplitterUpgradeable.sol +++ b/contracts/external-deps/openzeppelin/finance/PaymentSplitterUpgradeable.sol @@ -62,10 +62,10 @@ contract PaymentSplitterUpgradeable is Initializable, ContextUpgradeable { __PaymentSplitter_init_unchained(payees, shares_); } - function __PaymentSplitter_init_unchained(address[] memory payees, uint256[] memory shares_) - internal - onlyInitializing - { + function __PaymentSplitter_init_unchained( + address[] memory payees, + uint256[] memory shares_ + ) internal onlyInitializing { require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch"); require(payees.length > 0, "PaymentSplitter: no payees"); diff --git a/contracts/external-deps/openzeppelin/governance/utils/IVotes.sol b/contracts/external-deps/openzeppelin/governance/utils/IVotes.sol index 6317d7752..0bef3f920 100644 --- a/contracts/external-deps/openzeppelin/governance/utils/IVotes.sol +++ b/contracts/external-deps/openzeppelin/governance/utils/IVotes.sol @@ -50,12 +50,5 @@ interface IVotes { /** * @dev Delegates votes from signer to `delegatee`. */ - function delegateBySig( - address delegatee, - uint256 nonce, - uint256 expiry, - uint8 v, - bytes32 r, - bytes32 s - ) external; + function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external; } diff --git a/contracts/external-deps/openzeppelin/metatx/MinimalForwarderEOAOnly.sol b/contracts/external-deps/openzeppelin/metatx/MinimalForwarderEOAOnly.sol index b55bcb7cd..6a5c2ef61 100644 --- a/contracts/external-deps/openzeppelin/metatx/MinimalForwarderEOAOnly.sol +++ b/contracts/external-deps/openzeppelin/metatx/MinimalForwarderEOAOnly.sol @@ -39,11 +39,10 @@ contract MinimalForwarderEOAOnly is EIP712 { return _nonces[req.from] == req.nonce && signer == req.from; } - function execute(ForwardRequest calldata req, bytes calldata signature) - public - payable - returns (bool, bytes memory) - { + function execute( + ForwardRequest calldata req, + bytes calldata signature + ) public payable returns (bool, bytes memory) { require(msg.sender == tx.origin, "not EOA"); require(verify(req, signature), "MinimalForwarder: signature does not match request"); _nonces[req.from] = req.nonce + 1; diff --git a/contracts/external-deps/openzeppelin/proxy/Clones.sol b/contracts/external-deps/openzeppelin/proxy/Clones.sol index 93ea0cec7..712519892 100644 --- a/contracts/external-deps/openzeppelin/proxy/Clones.sol +++ b/contracts/external-deps/openzeppelin/proxy/Clones.sol @@ -79,11 +79,10 @@ library Clones { /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ - function predictDeterministicAddress(address implementation, bytes32 salt) - internal - view - returns (address predicted) - { + function predictDeterministicAddress( + address implementation, + bytes32 salt + ) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } } diff --git a/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol b/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol index 766292a08..d74e634a3 100644 --- a/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol +++ b/contracts/external-deps/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol @@ -5,8 +5,8 @@ pragma solidity ^0.8.2; import "../beacon/IBeacon.sol"; import "../IERC1822Proxiable.sol"; -import "../../../../lib/TWAddress.sol"; -import "../../../../lib/TWStorageSlot.sol"; +import "../../../../lib/Address.sol"; +import "../../../../lib/StorageSlot.sol"; /** * @dev This abstract contract provides getters and event emitting update functions for @@ -36,15 +36,15 @@ abstract contract ERC1967Upgrade { * @dev Returns the current implementation address. */ function _getImplementation() internal view returns (address) { - return TWStorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; + return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } /** * @dev Stores a new address in the EIP1967 implementation slot. */ function _setImplementation(address newImplementation) private { - require(TWAddress.isContract(newImplementation), "ERC1967: new implementation is not a contract"); - TWStorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; + require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract"); + StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } /** @@ -62,14 +62,10 @@ abstract contract ERC1967Upgrade { * * Emits an {Upgraded} event. */ - function _upgradeToAndCall( - address newImplementation, - bytes memory data, - bool forceCall - ) internal { + function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal { _upgradeTo(newImplementation); if (data.length > 0 || forceCall) { - TWAddress.functionDelegateCall(newImplementation, data); + Address.functionDelegateCall(newImplementation, data); } } @@ -78,15 +74,11 @@ abstract contract ERC1967Upgrade { * * Emits an {Upgraded} event. */ - function _upgradeToAndCallUUPS( - address newImplementation, - bytes memory data, - bool forceCall - ) internal { + function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal { // Upgrades from old implementations will perform a rollback test. This test requires the new // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing // this special case will break upgrade paths from old UUPS implementation to new ones. - if (TWStorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) { + if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) { _setImplementation(newImplementation); } else { try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) { @@ -114,7 +106,7 @@ abstract contract ERC1967Upgrade { * @dev Returns the current admin. */ function _getAdmin() internal view returns (address) { - return TWStorageSlot.getAddressSlot(_ADMIN_SLOT).value; + return StorageSlot.getAddressSlot(_ADMIN_SLOT).value; } /** @@ -122,7 +114,7 @@ abstract contract ERC1967Upgrade { */ function _setAdmin(address newAdmin) private { require(newAdmin != address(0), "ERC1967: new admin is the zero address"); - TWStorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin; + StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin; } /** @@ -150,19 +142,19 @@ abstract contract ERC1967Upgrade { * @dev Returns the current beacon. */ function _getBeacon() internal view returns (address) { - return TWStorageSlot.getAddressSlot(_BEACON_SLOT).value; + return StorageSlot.getAddressSlot(_BEACON_SLOT).value; } /** * @dev Stores a new beacon in the EIP1967 beacon slot. */ function _setBeacon(address newBeacon) private { - require(TWAddress.isContract(newBeacon), "ERC1967: new beacon is not a contract"); + require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract"); require( - TWAddress.isContract(IBeacon(newBeacon).implementation()), + Address.isContract(IBeacon(newBeacon).implementation()), "ERC1967: beacon implementation is not a contract" ); - TWStorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon; + StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon; } /** @@ -171,15 +163,11 @@ abstract contract ERC1967Upgrade { * * Emits a {BeaconUpgraded} event. */ - function _upgradeBeaconToAndCall( - address newBeacon, - bytes memory data, - bool forceCall - ) internal { + function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal { _setBeacon(newBeacon); emit BeaconUpgraded(newBeacon); if (data.length > 0 || forceCall) { - TWAddress.functionDelegateCall(IBeacon(newBeacon).implementation(), data); + Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data); } } } diff --git a/contracts/external-deps/openzeppelin/proxy/utils/Initializable.sol b/contracts/external-deps/openzeppelin/proxy/utils/Initializable.sol index 3345941e4..a2ade335e 100644 --- a/contracts/external-deps/openzeppelin/proxy/utils/Initializable.sol +++ b/contracts/external-deps/openzeppelin/proxy/utils/Initializable.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.2; -import "../../../../lib/TWAddress.sol"; +import "../../../../lib/Address.sol"; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed @@ -78,7 +78,7 @@ abstract contract Initializable { modifier initializer() { bool isTopLevelCall = !_initializing; require( - (isTopLevelCall && _initialized < 1) || (!TWAddress.isContract(address(this)) && _initialized == 1), + (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1), "Initializable: contract is already initialized" ); _initialized = 1; diff --git a/contracts/external-deps/openzeppelin/token/ERC20/ERC20.sol b/contracts/external-deps/openzeppelin/token/ERC20/ERC20.sol index c21319b88..66ce9ec07 100644 --- a/contracts/external-deps/openzeppelin/token/ERC20/ERC20.sol +++ b/contracts/external-deps/openzeppelin/token/ERC20/ERC20.sol @@ -155,11 +155,7 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ - function transferFrom( - address from, - address to, - uint256 amount - ) public virtual override returns (bool) { + function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); @@ -223,11 +219,7 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ - function _transfer( - address from, - address to, - uint256 amount - ) internal virtual { + function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); @@ -307,11 +299,7 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ - function _approve( - address owner, - address spender, - uint256 amount - ) internal virtual { + function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); @@ -327,11 +315,7 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * * Might emit an {Approval} event. */ - function _spendAllowance( - address owner, - address spender, - uint256 amount - ) internal virtual { + 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"); @@ -355,11 +339,7 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ - function _beforeTokenTransfer( - address from, - address to, - uint256 amount - ) internal virtual {} + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes @@ -375,9 +355,5 @@ contract ERC20 is Context, IERC20, IERC20Metadata { * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ - function _afterTokenTransfer( - address from, - address to, - uint256 amount - ) internal virtual {} + function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } diff --git a/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Votes.sol b/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Votes.sol index f7ac33a48..e80527066 100644 --- a/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Votes.sol +++ b/contracts/external-deps/openzeppelin/token/ERC20/extensions/ERC20Votes.sol @@ -183,11 +183,7 @@ abstract contract ERC20Votes is IVotes, ERC20Permit { * * Emits a {DelegateVotesChanged} event. */ - function _afterTokenTransfer( - address from, - address to, - uint256 amount - ) internal virtual override { + function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual override { super._afterTokenTransfer(from, to, amount); _moveVotingPower(delegates(from), delegates(to), amount); @@ -208,11 +204,7 @@ abstract contract ERC20Votes is IVotes, ERC20Permit { _moveVotingPower(currentDelegate, delegatee, delegatorBalance); } - function _moveVotingPower( - address src, - address dst, - uint256 amount - ) private { + function _moveVotingPower(address src, address dst, uint256 amount) private { if (src != dst && amount > 0) { if (src != address(0)) { (uint256 oldWeight, uint256 newWeight) = _writeCheckpoint(_checkpoints[src], _subtract, amount); diff --git a/contracts/external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol b/contracts/external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol index 1ced3264a..572ccd811 100644 --- a/contracts/external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol +++ b/contracts/external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import "../../../../../eip/interface/IERC20.sol"; -import "../../../../../lib/TWAddress.sol"; +import { Address } from "@openzeppelin/contracts/utils/Address.sol"; /** * @title SafeERC20 @@ -16,22 +16,13 @@ import "../../../../../lib/TWAddress.sol"; * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { - using TWAddress for address; + using Address for address; - function safeTransfer( - IERC20 token, - address to, - uint256 value - ) internal { + function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } - function safeTransferFrom( - IERC20 token, - address from, - address to, - uint256 value - ) internal { + function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } @@ -42,11 +33,7 @@ library SafeERC20 { * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ - function safeApprove( - IERC20 token, - address spender, - uint256 value - ) internal { + function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' @@ -57,20 +44,12 @@ library SafeERC20 { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } - function safeIncreaseAllowance( - IERC20 token, - address spender, - uint256 value - ) internal { + function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } - function safeDecreaseAllowance( - IERC20 token, - address spender, - uint256 value - ) internal { + function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); diff --git a/contracts/external-deps/openzeppelin/token/ERC721/utils/ERC721Holder.sol b/contracts/external-deps/openzeppelin/token/ERC721/utils/ERC721Holder.sol index 394926d51..cfa533a47 100644 --- a/contracts/external-deps/openzeppelin/token/ERC721/utils/ERC721Holder.sol +++ b/contracts/external-deps/openzeppelin/token/ERC721/utils/ERC721Holder.sol @@ -17,12 +17,7 @@ contract ERC721Holder is IERC721Receiver { * * Always returns `IERC721Receiver.onERC721Received.selector`. */ - function onERC721Received( - address, - address, - uint256, - bytes memory - ) public virtual override returns (bytes4) { + function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) { return this.onERC721Received.selector; } } diff --git a/contracts/external-deps/openzeppelin/utils/Create2.sol b/contracts/external-deps/openzeppelin/utils/Create2.sol index b1e4ee15c..d810d8045 100644 --- a/contracts/external-deps/openzeppelin/utils/Create2.sol +++ b/contracts/external-deps/openzeppelin/utils/Create2.sol @@ -27,11 +27,7 @@ library Create2 { * - the factory must have a balance of at least `amount`. * - if `amount` is non-zero, `bytecode` must have a `payable` constructor. */ - function deploy( - uint256 amount, - bytes32 salt, - bytes memory bytecode - ) internal returns (address) { + function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address) { address addr; require(address(this).balance >= amount, "Create2: insufficient balance"); require(bytecode.length != 0, "Create2: bytecode length is zero"); @@ -55,11 +51,7 @@ library Create2 { * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}. */ - function computeAddress( - bytes32 salt, - bytes32 bytecodeHash, - address deployer - ) internal pure returns (address) { + function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address) { bytes32 _data = keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHash)); return address(uint160(uint256(_data))); } diff --git a/contracts/external-deps/openzeppelin/utils/ERC721/ERC721Holder.sol b/contracts/external-deps/openzeppelin/utils/ERC721/ERC721Holder.sol index b7dc2ba09..5d364e52e 100644 --- a/contracts/external-deps/openzeppelin/utils/ERC721/ERC721Holder.sol +++ b/contracts/external-deps/openzeppelin/utils/ERC721/ERC721Holder.sol @@ -17,12 +17,7 @@ contract ERC721Holder is IERC721Receiver { * * Always returns `IERC721Receiver.onERC721Received.selector`. */ - function onERC721Received( - address, - address, - uint256, - bytes memory - ) public virtual override returns (bytes4) { + function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) { return this.onERC721Received.selector; } } diff --git a/contracts/external-deps/openzeppelin/utils/cryptography/ECDSA.sol b/contracts/external-deps/openzeppelin/utils/cryptography/ECDSA.sol index 9cf8e0fa0..0c9f09bdb 100644 --- a/contracts/external-deps/openzeppelin/utils/cryptography/ECDSA.sol +++ b/contracts/external-deps/openzeppelin/utils/cryptography/ECDSA.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "../../../../lib/TWStrings.sol"; +import "../../../../lib/Strings.sol"; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. @@ -98,11 +98,7 @@ library ECDSA { * * _Available since v4.3._ */ - function tryRecover( - bytes32 hash, - bytes32 r, - bytes32 vs - ) internal pure returns (address, RecoverError) { + function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); @@ -113,11 +109,7 @@ library ECDSA { * * _Available since v4.2._ */ - function recover( - bytes32 hash, - bytes32 r, - bytes32 vs - ) internal pure returns (address) { + function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; @@ -129,12 +121,7 @@ library ECDSA { * * _Available since v4.3._ */ - function tryRecover( - bytes32 hash, - uint8 v, - bytes32 r, - bytes32 s - ) internal pure returns (address, RecoverError) { + function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most @@ -161,12 +148,7 @@ library ECDSA { * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ - function recover( - bytes32 hash, - uint8 v, - bytes32 r, - bytes32 s - ) internal pure returns (address) { + function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; @@ -200,7 +182,7 @@ library ECDSA { * See {recover}. */ function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) { - return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", TWStrings.toString(s.length), s)); + return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s)); } /** diff --git a/contracts/external-deps/openzeppelin/utils/math/SafeMath.sol b/contracts/external-deps/openzeppelin/utils/math/SafeMath.sol index 550f0e779..2f48fb736 100644 --- a/contracts/external-deps/openzeppelin/utils/math/SafeMath.sol +++ b/contracts/external-deps/openzeppelin/utils/math/SafeMath.sol @@ -165,11 +165,7 @@ library SafeMath { * * - Subtraction cannot overflow. */ - function sub( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; @@ -188,11 +184,7 @@ library SafeMath { * * - The divisor cannot be zero. */ - function div( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; @@ -214,11 +206,7 @@ library SafeMath { * * - The divisor cannot be zero. */ - function mod( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { + function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; diff --git a/contracts/infra/ContractPublisher.sol b/contracts/infra/ContractPublisher.sol index 809992eb7..d3f5d883c 100644 --- a/contracts/infra/ContractPublisher.sol +++ b/contracts/infra/ContractPublisher.sol @@ -16,7 +16,7 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts/metatx/ERC2771Context.sol"; import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; -import "@openzeppelin/contracts/utils/Multicall.sol"; +import "../extension/Multicall.sol"; // ========== Internal imports ========== import { IContractPublisher } from "./interface/IContractPublisher.sol"; @@ -71,11 +71,9 @@ contract ContractPublisher is IContractPublisher, ERC2771Context, AccessControlE //////////////////////////////////////////////////////////////*/ /// @notice Returns the latest version of all contracts published by a publisher. - function getAllPublishedContracts(address _publisher) - external - view - returns (CustomContractInstance[] memory published) - { + function getAllPublishedContracts( + address _publisher + ) external view returns (CustomContractInstance[] memory published) { CustomContractInstance[] memory linkedData = prevPublisher.getAllPublishedContracts(_publisher); uint256 currentTotal = EnumerableSet.length(contractsOfPublisher[_publisher].contractIds); uint256 prevTotal = linkedData.length; @@ -93,11 +91,10 @@ contract ContractPublisher is IContractPublisher, ERC2771Context, AccessControlE } /// @notice Returns all versions of a published contract. - function getPublishedContractVersions(address _publisher, string memory _contractId) - external - view - returns (CustomContractInstance[] memory published) - { + function getPublishedContractVersions( + address _publisher, + string memory _contractId + ) external view returns (CustomContractInstance[] memory published) { CustomContractInstance[] memory linkedVersions = prevPublisher.getPublishedContractVersions( _publisher, _contractId @@ -121,11 +118,10 @@ contract ContractPublisher is IContractPublisher, ERC2771Context, AccessControlE } /// @notice Returns the latest version of a contract published by a publisher. - function getPublishedContract(address _publisher, string memory _contractId) - external - view - returns (CustomContractInstance memory published) - { + function getPublishedContract( + address _publisher, + string memory _contractId + ) external view returns (CustomContractInstance memory published) { published = contractsOfPublisher[_publisher].contracts[keccak256(bytes(_contractId))].latest; // if not found, check the previous publisher if (published.publishTimestamp == 0) { @@ -171,11 +167,10 @@ contract ContractPublisher is IContractPublisher, ERC2771Context, AccessControlE } /// @notice Lets a publisher unpublish a contract and all its versions. - function unpublishContract(address _publisher, string memory _contractId) - external - onlyPublisher(_publisher) - onlyUnpausedOrAdmin - { + function unpublishContract( + address _publisher, + string memory _contractId + ) external onlyPublisher(_publisher) onlyUnpausedOrAdmin { bytes32 contractIdInBytes = keccak256(bytes(_contractId)); bool removed = EnumerableSet.remove(contractsOfPublisher[_publisher].contractIds, contractIdInBytes); @@ -204,11 +199,9 @@ contract ContractPublisher is IContractPublisher, ERC2771Context, AccessControlE } /// @notice Retrieve the published metadata URI from a compiler metadata URI - function getPublishedUriFromCompilerUri(string memory compilerMetadataUri) - public - view - returns (string[] memory publishedMetadataUris) - { + function getPublishedUriFromCompilerUri( + string memory compilerMetadataUri + ) public view returns (string[] memory publishedMetadataUris) { string[] memory linkedUris = prevPublisher.getPublishedUriFromCompilerUri(compilerMetadataUri); uint256 prevTotal = linkedUris.length; uint256 currentTotal = compilerMetadataUriToPublishedMetadataUris[compilerMetadataUri].index; diff --git a/contracts/infra/TWFactory.sol b/contracts/infra/TWFactory.sol index 5682619fe..7d88d1636 100644 --- a/contracts/infra/TWFactory.sol +++ b/contracts/infra/TWFactory.sol @@ -12,15 +12,16 @@ pragma solidity ^0.8.11; // \$$$$ |$$ | $$ |$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |\$$$$$$$\ $$$$$$$ | // \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/ -import "./TWRegistry.sol"; +import { TWRegistry } from "./TWRegistry.sol"; import "./interface/IThirdwebContract.sol"; import "../extension/interface/IContractFactory.sol"; -import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; -import "@openzeppelin/contracts/metatx/ERC2771Context.sol"; -import "@openzeppelin/contracts/utils/Create2.sol"; -import "@openzeppelin/contracts/utils/Multicall.sol"; -import "@openzeppelin/contracts/proxy/Clones.sol"; +import { AccessControlEnumerable, Context } from "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; +import { ERC2771Context } from "@openzeppelin/contracts/metatx/ERC2771Context.sol"; +import { Create2 } from "@openzeppelin/contracts/utils/Create2.sol"; +import { Multicall } from "../extension/Multicall.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; +import { Clones } from "@openzeppelin/contracts/proxy/Clones.sol"; contract TWFactory is Multicall, ERC2771Context, AccessControlEnumerable, IContractFactory { /// @dev Only FACTORY_ROLE holders can approve/unapprove implementations for proxies to point to. @@ -62,11 +63,7 @@ contract TWFactory is Multicall, ERC2771Context, AccessControlEnumerable, IContr * @dev Deploys a proxy at a deterministic address by taking in `salt` as a parameter. * Proxy points to the latest version of the given contract type. */ - function deployProxyDeterministic( - bytes32 _type, - bytes memory _data, - bytes32 _salt - ) public returns (address) { + function deployProxyDeterministic(bytes32 _type, bytes memory _data, bytes32 _salt) public returns (address) { address _implementation = implementation[_type][currentVersion[_type]]; return deployProxyByImplementation(_implementation, _data, _salt); } diff --git a/contracts/infra/TWFee.sol b/contracts/infra/TWFee.sol index 4ee38b12c..430f79240 100644 --- a/contracts/infra/TWFee.sol +++ b/contracts/infra/TWFee.sol @@ -7,15 +7,15 @@ import "./TWFactory.sol"; import "./interface/ITWFee.sol"; import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; -import "@openzeppelin/contracts/utils/Multicall.sol"; +import { Multicall } from "../extension/Multicall.sol"; import "@openzeppelin/contracts/metatx/ERC2771Context.sol"; interface IFeeTierPlacementExtension { /// @dev Returns the fee tier for a given proxy contract address and proxy deployer address. - function getFeeTier(address deployer, address proxy) - external - view - returns (uint128 tierId, uint128 validUntilTimestamp); + function getFeeTier( + address deployer, + address proxy + ) external view returns (uint128 tierId, uint128 validUntilTimestamp); } contract TWFee is ITWFee, Multicall, ERC2771Context, AccessControlEnumerable, IFeeTierPlacementExtension { @@ -68,12 +68,10 @@ contract TWFee is ITWFee, Multicall, ERC2771Context, AccessControlEnumerable, IF } /// @dev Returns the fee tier for a proxy deployer wallet or contract address. - function getFeeTier(address _deployer, address _proxy) - public - view - override - returns (uint128 tierId, uint128 validUntilTimestamp) - { + function getFeeTier( + address _deployer, + address _proxy + ) public view override returns (uint128 tierId, uint128 validUntilTimestamp) { Tier memory targetTier = tier[_proxy]; if (block.timestamp <= targetTier.validUntilTimestamp) { tierId = targetTier.id; diff --git a/contracts/infra/TWMinimalFactory.sol b/contracts/infra/TWMinimalFactory.sol index bfd48cb36..63b81b9ed 100644 --- a/contracts/infra/TWMinimalFactory.sol +++ b/contracts/infra/TWMinimalFactory.sol @@ -17,11 +17,7 @@ import "@openzeppelin/contracts/proxy/Clones.sol"; contract TWMinimalFactory { /// @dev Deploys a proxy that points to the given implementation. - constructor( - address _implementation, - bytes memory _data, - bytes32 _salt - ) payable { + constructor(address _implementation, bytes memory _data, bytes32 _salt) payable { address instance; bytes32 salthash = keccak256(abi.encodePacked(msg.sender, _salt)); assembly { diff --git a/contracts/infra/TWMultichainRegistry.sol b/contracts/infra/TWMultichainRegistry.sol index 86d20a90d..772b98674 100644 --- a/contracts/infra/TWMultichainRegistry.sol +++ b/contracts/infra/TWMultichainRegistry.sol @@ -14,7 +14,7 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; -import "@openzeppelin/contracts/utils/Multicall.sol"; +import "../extension/Multicall.sol"; import "@openzeppelin/contracts/metatx/ERC2771Context.sol"; import "./interface/ITWMultichainRegistry.sol"; @@ -37,12 +37,7 @@ contract TWMultichainRegistry is ITWMultichainRegistry, Multicall, ERC2771Contex } // slither-disable-next-line similar-names - function add( - address _deployer, - address _deployment, - uint256 _chainId, - string memory metadataUri - ) external { + function add(address _deployer, address _deployment, uint256 _chainId, string memory metadataUri) external { require(hasRole(OPERATOR_ROLE, _msgSender()) || _deployer == _msgSender(), "not operator or deployer."); bool added = deployments[_deployer][_chainId].add(_deployment); @@ -58,11 +53,7 @@ contract TWMultichainRegistry is ITWMultichainRegistry, Multicall, ERC2771Contex } // slither-disable-next-line similar-names - function remove( - address _deployer, - address _deployment, - uint256 _chainId - ) external { + function remove(address _deployer, address _deployment, uint256 _chainId) external { require(hasRole(OPERATOR_ROLE, _msgSender()) || _deployer == _msgSender(), "not operator or deployer."); bool removed = deployments[_deployer][_chainId].remove(_deployment); diff --git a/contracts/infra/TWRegistry.sol b/contracts/infra/TWRegistry.sol index fc117200a..c4f6667a3 100644 --- a/contracts/infra/TWRegistry.sol +++ b/contracts/infra/TWRegistry.sol @@ -14,7 +14,7 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; -import "@openzeppelin/contracts/utils/Multicall.sol"; +import "../extension/Multicall.sol"; import "@openzeppelin/contracts/metatx/ERC2771Context.sol"; contract TWRegistry is Multicall, ERC2771Context, AccessControlEnumerable { diff --git a/contracts/infra/TWStatelessFactory.sol b/contracts/infra/TWStatelessFactory.sol index c22c1368d..7db3b5684 100644 --- a/contracts/infra/TWStatelessFactory.sol +++ b/contracts/infra/TWStatelessFactory.sol @@ -15,7 +15,7 @@ pragma solidity ^0.8.11; import "../extension/interface/IContractFactory.sol"; import "@openzeppelin/contracts/metatx/ERC2771Context.sol"; -import "@openzeppelin/contracts/utils/Multicall.sol"; +import "../extension/Multicall.sol"; import "@openzeppelin/contracts/proxy/Clones.sol"; contract TWStatelessFactory is Multicall, ERC2771Context, IContractFactory { diff --git a/contracts/infra/forwarder/Forwarder.sol b/contracts/infra/forwarder/Forwarder.sol index a77c7eef8..ed680c92e 100644 --- a/contracts/infra/forwarder/Forwarder.sol +++ b/contracts/infra/forwarder/Forwarder.sol @@ -49,11 +49,10 @@ contract Forwarder is EIP712 { return _nonces[req.from] == req.nonce && signer == req.from; } - function execute(ForwardRequest calldata req, bytes calldata signature) - public - payable - returns (bool, bytes memory) - { + function execute( + ForwardRequest calldata req, + bytes calldata signature + ) public payable returns (bool, bytes memory) { require(verify(req, signature), "MinimalForwarder: signature does not match request"); _nonces[req.from] = req.nonce + 1; diff --git a/contracts/infra/forwarder/ForwarderChainlessDomain.sol b/contracts/infra/forwarder/ForwarderChainlessDomain.sol index c45fe6830..5b5f4b34f 100644 --- a/contracts/infra/forwarder/ForwarderChainlessDomain.sol +++ b/contracts/infra/forwarder/ForwarderChainlessDomain.sol @@ -62,11 +62,10 @@ contract ForwarderChainlessDomain is EIP712ChainlessDomain { return _nonces[req.from] == req.nonce && signer == req.from; } - function execute(ForwardRequest calldata req, bytes calldata signature) - public - payable - returns (bool, bytes memory) - { + function execute( + ForwardRequest calldata req, + bytes calldata signature + ) public payable returns (bool, bytes memory) { // require(req.chainid == block.chainid, "MinimalForwarder: invalid chainId"); require(verify(req, signature), "MinimalForwarder: signature does not match request"); _nonces[req.from] = req.nonce + 1; diff --git a/contracts/infra/interface/IContractPublisher.sol b/contracts/infra/interface/IContractPublisher.sol index 082d52527..27806668f 100644 --- a/contracts/infra/interface/IContractPublisher.sol +++ b/contracts/infra/interface/IContractPublisher.sol @@ -51,10 +51,9 @@ interface IContractPublisher { * * @return published An array of all contracts published by the publisher. */ - function getAllPublishedContracts(address publisher) - external - view - returns (CustomContractInstance[] memory published); + function getAllPublishedContracts( + address publisher + ) external view returns (CustomContractInstance[] memory published); /** * @notice Returns all versions of a published contract. @@ -64,10 +63,10 @@ interface IContractPublisher { * * @return published The desired contracts published by the publisher. */ - function getPublishedContractVersions(address publisher, string memory contractId) - external - view - returns (CustomContractInstance[] memory published); + function getPublishedContractVersions( + address publisher, + string memory contractId + ) external view returns (CustomContractInstance[] memory published); /** * @notice Returns the latest version of a contract published by a publisher. @@ -77,10 +76,10 @@ interface IContractPublisher { * * @return published The desired contract published by the publisher. */ - function getPublishedContract(address publisher, string memory contractId) - external - view - returns (CustomContractInstance memory published); + function getPublishedContract( + address publisher, + string memory contractId + ) external view returns (CustomContractInstance memory published); /** * @notice Let's an account publish a contract. @@ -123,8 +122,7 @@ interface IContractPublisher { /** * @notice Retrieve the published metadata URI from a compiler metadata URI. */ - function getPublishedUriFromCompilerUri(string memory compilerMetadataUri) - external - view - returns (string[] memory publishedMetadataUris); + function getPublishedUriFromCompilerUri( + string memory compilerMetadataUri + ) external view returns (string[] memory publishedMetadataUris); } diff --git a/contracts/infra/interface/ITWMultichainRegistry.sol b/contracts/infra/interface/ITWMultichainRegistry.sol index be5ba1080..c91ab1fc6 100644 --- a/contracts/infra/interface/ITWMultichainRegistry.sol +++ b/contracts/infra/interface/ITWMultichainRegistry.sol @@ -12,19 +12,10 @@ interface ITWMultichainRegistry { event Deleted(address indexed deployer, address indexed deployment, uint256 indexed chainId); /// @notice Add a deployment for a deployer. - function add( - address _deployer, - address _deployment, - uint256 _chainId, - string memory metadataUri - ) external; + function add(address _deployer, address _deployment, uint256 _chainId, string memory metadataUri) external; /// @notice Remove a deployment for a deployer. - function remove( - address _deployer, - address _deployment, - uint256 _chainId - ) external; + function remove(address _deployer, address _deployment, uint256 _chainId) external; /// @notice Get all deployments for a deployer. function getAll(address _deployer) external view returns (Deployment[] memory allDeployments); diff --git a/contracts/infra/interface/ITWRegistry.sol b/contracts/infra/interface/ITWRegistry.sol index 51754efff..78ebf554f 100644 --- a/contracts/infra/interface/ITWRegistry.sol +++ b/contracts/infra/interface/ITWRegistry.sol @@ -11,18 +11,10 @@ interface ITWRegistry { event Deleted(address indexed deployer, address indexed deployment, uint256 indexed chainId); /// @notice Add a deployment for a deployer. - function add( - address _deployer, - address _deployment, - uint256 _chainId - ) external; + function add(address _deployer, address _deployment, uint256 _chainId) external; /// @notice Remove a deployment for a deployer. - function remove( - address _deployer, - address _deployment, - uint256 _chainId - ) external; + function remove(address _deployer, address _deployment, uint256 _chainId) external; /// @notice Get all deployments for a deployer. function getAll(address _deployer) external view returns (Deployment[] memory allDeployments); diff --git a/contracts/infra/registry/entrypoint/TWMultichainRegistryRouter.sol b/contracts/infra/registry/entrypoint/TWMultichainRegistryRouter.sol index c2fa62655..03c88e335 100644 --- a/contracts/infra/registry/entrypoint/TWMultichainRegistryRouter.sol +++ b/contracts/infra/registry/entrypoint/TWMultichainRegistryRouter.sol @@ -35,10 +35,10 @@ contract TWMultichainRegistryRouter is PermissionsEnumerableLogic, ERC2771Contex Constructor + initializer logic //////////////////////////////////////////////////////////////*/ - constructor(address _pluginMap, address[] memory _trustedForwarders) - ERC2771ContextLogic(_trustedForwarders) - Router(_pluginMap) - { + constructor( + address _pluginMap, + address[] memory _trustedForwarders + ) ERC2771ContextLogic(_trustedForwarders) Router(_pluginMap) { _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); } diff --git a/contracts/infra/registry/registry-extension/TWMultichainRegistryLogic.sol b/contracts/infra/registry/registry-extension/TWMultichainRegistryLogic.sol index b5362fc5b..3a0159d23 100644 --- a/contracts/infra/registry/registry-extension/TWMultichainRegistryLogic.sol +++ b/contracts/infra/registry/registry-extension/TWMultichainRegistryLogic.sol @@ -36,12 +36,7 @@ contract TWMultichainRegistryLogic is ITWMultichainRegistry, ERC2771ContextConsu //////////////////////////////////////////////////////////////*/ // slither-disable-next-line similar-names - function add( - address _deployer, - address _deployment, - uint256 _chainId, - string memory metadataUri - ) external { + function add(address _deployer, address _deployment, uint256 _chainId, string memory metadataUri) external { require( PermissionsEnumerableLogic(address(this)).hasRole(OPERATOR_ROLE, _msgSender()) || _deployer == _msgSender(), "not operator or deployer." @@ -62,11 +57,7 @@ contract TWMultichainRegistryLogic is ITWMultichainRegistry, ERC2771ContextConsu } // slither-disable-next-line similar-names - function remove( - address _deployer, - address _deployment, - uint256 _chainId - ) external { + function remove(address _deployer, address _deployment, uint256 _chainId) external { require( PermissionsEnumerableLogic(address(this)).hasRole(OPERATOR_ROLE, _msgSender()) || _deployer == _msgSender(), "not operator or deployer." diff --git a/contracts/legacy-contracts/extension/DropSinglePhase1155_V1.sol b/contracts/legacy-contracts/extension/DropSinglePhase1155_V1.sol index ec1eb964e..003906bd7 100644 --- a/contracts/legacy-contracts/extension/DropSinglePhase1155_V1.sol +++ b/contracts/legacy-contracts/extension/DropSinglePhase1155_V1.sol @@ -5,10 +5,10 @@ pragma solidity ^0.8.0; import "./interface/IDropSinglePhase1155_V1.sol"; import "../../lib/MerkleProof.sol"; -import "../../lib/TWBitMaps.sol"; +import "../../lib/BitMaps.sol"; abstract contract DropSinglePhase1155_V1 is IDropSinglePhase1155_V1 { - using TWBitMaps for TWBitMaps.BitMap; + using BitMaps for BitMaps.BitMap; /*/////////////////////////////////////////////////////////////// Mappings @@ -30,7 +30,7 @@ abstract contract DropSinglePhase1155_V1 is IDropSinglePhase1155_V1 { * @dev Map from a claim condition uid to whether an address in an allowlist * has already claimed tokens i.e. used their place in the allowlist. */ - mapping(bytes32 => TWBitMaps.BitMap) private usedAllowlistSpot; + mapping(bytes32 => BitMaps.BitMap) private usedAllowlistSpot; /*/////////////////////////////////////////////////////////////// Drop logic @@ -207,11 +207,10 @@ abstract contract DropSinglePhase1155_V1 is IDropSinglePhase1155_V1 { } /// @dev Returns the timestamp for when a claimer is eligible for claiming NFTs again. - function getClaimTimestamp(uint256 _tokenId, address _claimer) - public - view - returns (uint256 lastClaimedAt, uint256 nextValidClaimTimestamp) - { + function getClaimTimestamp( + uint256 _tokenId, + address _claimer + ) public view returns (uint256 lastClaimedAt, uint256 nextValidClaimTimestamp) { lastClaimedAt = lastClaimTimestamp[conditionId[_tokenId]][_claimer]; unchecked { @@ -263,11 +262,7 @@ abstract contract DropSinglePhase1155_V1 is IDropSinglePhase1155_V1 { ) internal virtual; /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim( - address _to, - uint256 _tokenId, - uint256 _quantityBeingClaimed - ) internal virtual; + function _transferTokensOnClaim(address _to, uint256 _tokenId, uint256 _quantityBeingClaimed) internal virtual; function _canSetClaimConditions() internal view virtual returns (bool); } diff --git a/contracts/legacy-contracts/extension/DropSinglePhase_V1.sol b/contracts/legacy-contracts/extension/DropSinglePhase_V1.sol index 904a57957..571a0150b 100644 --- a/contracts/legacy-contracts/extension/DropSinglePhase_V1.sol +++ b/contracts/legacy-contracts/extension/DropSinglePhase_V1.sol @@ -5,10 +5,10 @@ pragma solidity ^0.8.0; import "./interface/IDropSinglePhase_V1.sol"; import "../../lib/MerkleProof.sol"; -import "../../lib/TWBitMaps.sol"; +import "../../lib/BitMaps.sol"; abstract contract DropSinglePhase_V1 is IDropSinglePhase_V1 { - using TWBitMaps for TWBitMaps.BitMap; + using BitMaps for BitMaps.BitMap; /*/////////////////////////////////////////////////////////////// State variables @@ -34,7 +34,7 @@ abstract contract DropSinglePhase_V1 is IDropSinglePhase_V1 { * @dev Map from a claim condition uid to whether an address in an allowlist * has already claimed tokens i.e. used their place in the allowlist. */ - mapping(bytes32 => TWBitMaps.BitMap) private usedAllowlistSpot; + mapping(bytes32 => BitMaps.BitMap) private usedAllowlistSpot; /*/////////////////////////////////////////////////////////////// Drop logic @@ -191,11 +191,9 @@ abstract contract DropSinglePhase_V1 is IDropSinglePhase_V1 { } /// @dev Returns the timestamp for when a claimer is eligible for claiming NFTs again. - function getClaimTimestamp(address _claimer) - public - view - returns (uint256 lastClaimedAt, uint256 nextValidClaimTimestamp) - { + function getClaimTimestamp( + address _claimer + ) public view returns (uint256 lastClaimedAt, uint256 nextValidClaimTimestamp) { lastClaimedAt = lastClaimTimestamp[conditionId][_claimer]; unchecked { @@ -245,10 +243,10 @@ abstract contract DropSinglePhase_V1 is IDropSinglePhase_V1 { ) internal virtual; /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - virtual - returns (uint256 startTokenId); + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal virtual returns (uint256 startTokenId); function _canSetClaimConditions() internal view virtual returns (bool); } diff --git a/contracts/legacy-contracts/extension/LazyMintWithTier_V1.sol b/contracts/legacy-contracts/extension/LazyMintWithTier_V1.sol index 141f6f39d..2acda2134 100644 --- a/contracts/legacy-contracts/extension/LazyMintWithTier_V1.sol +++ b/contracts/legacy-contracts/extension/LazyMintWithTier_V1.sol @@ -72,11 +72,9 @@ abstract contract LazyMintWithTier_V1 is ILazyMintWithTier, BatchMintMetadata_V1 } /// @notice Returns all metadata lazy minted for the given tier. - function _getMetadataInTier(string memory _tier) - private - view - returns (TokenRange[] memory tokens, string[] memory baseURIs) - { + function _getMetadataInTier( + string memory _tier + ) private view returns (TokenRange[] memory tokens, string[] memory baseURIs) { tokens = tokensInTier[_tier]; uint256 len = tokens.length; diff --git a/contracts/legacy-contracts/extension/interface/IClaimCondition_V1.sol b/contracts/legacy-contracts/extension/interface/IClaimCondition_V1.sol index b706821bd..7615ded78 100644 --- a/contracts/legacy-contracts/extension/interface/IClaimCondition_V1.sol +++ b/contracts/legacy-contracts/extension/interface/IClaimCondition_V1.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; /// @author thirdweb -import "../../../lib/TWBitMaps.sol"; +import "../../../lib/BitMaps.sol"; /** * Thirdweb's 'Drop' contracts are distribution mechanisms for tokens. diff --git a/contracts/legacy-contracts/extension/interface/IDropSinglePhase1155_V1.sol b/contracts/legacy-contracts/extension/interface/IDropSinglePhase1155_V1.sol index e0234f546..0cf271b46 100644 --- a/contracts/legacy-contracts/extension/interface/IDropSinglePhase1155_V1.sol +++ b/contracts/legacy-contracts/extension/interface/IDropSinglePhase1155_V1.sol @@ -54,9 +54,5 @@ interface IDropSinglePhase1155_V1 is IClaimCondition_V1 { * * @param tokenId The tokenId for which to set the relevant claim condition. */ - function setClaimConditions( - uint256 tokenId, - ClaimCondition calldata phase, - bool resetClaimEligibility - ) external; + function setClaimConditions(uint256 tokenId, ClaimCondition calldata phase, bool resetClaimEligibility) external; } diff --git a/contracts/legacy-contracts/interface/ISignatureMintERC721_V1.sol b/contracts/legacy-contracts/interface/ISignatureMintERC721_V1.sol index d8703429c..e22061e86 100644 --- a/contracts/legacy-contracts/interface/ISignatureMintERC721_V1.sol +++ b/contracts/legacy-contracts/interface/ISignatureMintERC721_V1.sol @@ -6,13 +6,13 @@ pragma solidity ^0.8.11; import "../../prebuilts/interface/token/ITokenERC721.sol"; interface ISignatureMintERC721_V1 { - function mintWithSignature(ITokenERC721.MintRequest calldata _req, bytes calldata _signature) - external - payable - returns (uint256 tokenIdMinted); + function mintWithSignature( + ITokenERC721.MintRequest calldata _req, + bytes calldata _signature + ) external payable returns (uint256 tokenIdMinted); - function verify(ITokenERC721.MintRequest calldata _req, bytes calldata _signature) - external - view - returns (bool, address); + function verify( + ITokenERC721.MintRequest calldata _req, + bytes calldata _signature + ) external view returns (bool, address); } diff --git a/contracts/legacy-contracts/interface/drop/IDropERC1155_V2.sol b/contracts/legacy-contracts/interface/drop/IDropERC1155_V2.sol index 83f1e89b6..9184580db 100644 --- a/contracts/legacy-contracts/interface/drop/IDropERC1155_V2.sol +++ b/contracts/legacy-contracts/interface/drop/IDropERC1155_V2.sol @@ -92,9 +92,5 @@ interface IDropERC1155_V2 is IERC1155Upgradeable, IDropClaimCondition_V2 { * `limitMerkleProofClaim` values when setting new * claim conditions. */ - function setClaimConditions( - uint256 tokenId, - ClaimCondition[] calldata phases, - bool resetClaimEligibility - ) external; + function setClaimConditions(uint256 tokenId, ClaimCondition[] calldata phases, bool resetClaimEligibility) external; } diff --git a/contracts/legacy-contracts/interface/drop/IDropERC721_V3.sol b/contracts/legacy-contracts/interface/drop/IDropERC721_V3.sol index ad76fe188..7148c2b4d 100644 --- a/contracts/legacy-contracts/interface/drop/IDropERC721_V3.sol +++ b/contracts/legacy-contracts/interface/drop/IDropERC721_V3.sol @@ -63,11 +63,7 @@ interface IDropERC721_V3 is IERC721Upgradeable, IDropClaimCondition_V2 { * result of encrypting the URI of the NFTs in the revealed * state. */ - function lazyMint( - uint256 amount, - string calldata baseURIForTokens, - bytes calldata encryptedBaseURI - ) external; + function lazyMint(uint256 amount, string calldata baseURIForTokens, bytes calldata encryptedBaseURI) external; /** * @notice Lets an account claim a given quantity of NFTs. diff --git a/contracts/legacy-contracts/pre-builts/DropERC1155_V2.sol b/contracts/legacy-contracts/pre-builts/DropERC1155_V2.sol index b8cecfaac..a02fcdede 100644 --- a/contracts/legacy-contracts/pre-builts/DropERC1155_V2.sol +++ b/contracts/legacy-contracts/pre-builts/DropERC1155_V2.sol @@ -10,7 +10,7 @@ import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/structs/BitMapsUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol"; @@ -44,7 +44,7 @@ contract DropERC1155_V2 is IPlatformFee, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, AccessControlEnumerableUpgradeable, ERC1155Upgradeable, IDropERC1155_V2 @@ -209,7 +209,9 @@ contract DropERC1155_V2 is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) + function supportsInterface( + bytes4 interfaceId + ) public view virtual @@ -220,12 +222,10 @@ contract DropERC1155_V2 is } /// @dev Returns the royalty recipient and amount, given a tokenId and sale price. - function royaltyInfo(uint256 tokenId, uint256 salePrice) - external - view - virtual - returns (address receiver, uint256 royaltyAmount) - { + function royaltyInfo( + uint256 tokenId, + uint256 salePrice + ) external view virtual returns (address receiver, uint256 royaltyAmount) { (address recipient, uint256 bps) = getRoyaltyInfoForToken(tokenId); receiver = recipient; royaltyAmount = (salePrice * bps) / MAX_BPS; @@ -558,11 +558,10 @@ contract DropERC1155_V2 is } /// @dev Returns the claim condition at the given uid. - function getClaimConditionById(uint256 _tokenId, uint256 _conditionId) - external - view - returns (ClaimCondition memory condition) - { + function getClaimConditionById( + uint256 _tokenId, + uint256 _conditionId + ) external view returns (ClaimCondition memory condition) { condition = claimCondition[_tokenId].phases[_conditionId]; } @@ -605,10 +604,10 @@ contract DropERC1155_V2 is } /// @dev Lets a contract admin update the default royalty recipient and bps. - function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setDefaultRoyaltyInfo( + address _royaltyRecipient, + uint256 _royaltyBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_royaltyBps <= MAX_BPS, "exceed royalty bps"); royaltyRecipient = _royaltyRecipient; @@ -631,10 +630,10 @@ contract DropERC1155_V2 is } /// @dev Lets a contract admin update the platform fee recipient and bps - function setPlatformFeeInfo(address _platformFeeRecipient, uint256 _platformFeeBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _platformFeeBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_platformFeeBps <= MAX_BPS, "bps <= 10000."); platformFeeBps = uint16(_platformFeeBps); @@ -660,11 +659,7 @@ contract DropERC1155_V2 is //////////////////////////////////////////////////////////////*/ /// @dev Lets a token owner burn the tokens they own (i.e. destroy for good) - function burn( - address account, - uint256 id, - uint256 value - ) public virtual { + function burn(address account, uint256 id, uint256 value) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not owner nor approved." @@ -674,11 +669,7 @@ contract DropERC1155_V2 is } /// @dev Lets a token owner burn multiple tokens they own at once (i.e. destroy for good) - function burnBatch( - address account, - uint256[] memory ids, - uint256[] memory values - ) public virtual { + function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not owner nor approved." diff --git a/contracts/legacy-contracts/pre-builts/DropERC20_V2.sol b/contracts/legacy-contracts/pre-builts/DropERC20_V2.sol index 5960927ae..2b36a8632 100644 --- a/contracts/legacy-contracts/pre-builts/DropERC20_V2.sol +++ b/contracts/legacy-contracts/pre-builts/DropERC20_V2.sol @@ -12,7 +12,7 @@ import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgrad import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/structs/BitMapsUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; // ========== Internal imports ========== @@ -38,7 +38,7 @@ contract DropERC20_V2 is IPlatformFee, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, AccessControlEnumerableUpgradeable, ERC20BurnableUpgradeable, ERC20VotesUpgradeable, @@ -139,13 +139,9 @@ contract DropERC20_V2 is //////////////////////////////////////////////////////////////*/ /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(AccessControlEnumerableUpgradeable) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(AccessControlEnumerableUpgradeable) returns (bool) { return super.supportsInterface(interfaceId); } @@ -158,11 +154,7 @@ contract DropERC20_V2 is } /// @dev Runs on every transfer. - function _beforeTokenTransfer( - address from, - address to, - uint256 amount - ) internal override(ERC20Upgradeable) { + function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20Upgradeable) { super._beforeTokenTransfer(from, to, amount); if (!hasRole(TRANSFER_ROLE, address(0)) && from != address(0) && to != address(0)) { @@ -236,10 +228,10 @@ contract DropERC20_V2 is } /// @dev Lets a contract admin (account with `DEFAULT_ADMIN_ROLE`) set claim conditions. - function setClaimConditions(ClaimCondition[] calldata _phases, bool _resetClaimEligibility) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setClaimConditions( + ClaimCondition[] calldata _phases, + bool _resetClaimEligibility + ) external onlyRole(DEFAULT_ADMIN_ROLE) { uint256 existingStartIndex = claimCondition.currentStartId; uint256 existingPhaseCount = claimCondition.count; @@ -303,11 +295,7 @@ contract DropERC20_V2 is } /// @dev Collects and distributes the primary sale value of tokens being claimed. - function collectClaimPrice( - uint256 _quantityToClaim, - address _currency, - uint256 _pricePerToken - ) internal { + function collectClaimPrice(uint256 _quantityToClaim, address _currency, uint256 _pricePerToken) internal { if (_pricePerToken == 0) { return; } @@ -327,11 +315,7 @@ contract DropERC20_V2 is } /// @dev Transfers the tokens being claimed. - function transferClaimedTokens( - address _to, - uint256 _conditionId, - uint256 _quantityBeingClaimed - ) internal { + function transferClaimedTokens(address _to, uint256 _conditionId, uint256 _quantityBeingClaimed) internal { // Update the supply minted under mint condition. claimCondition.phases[_conditionId].supplyClaimed += _quantityBeingClaimed; @@ -425,11 +409,10 @@ contract DropERC20_V2 is } /// @dev Returns the timestamp for when a claimer is eligible for claiming tokens again. - function getClaimTimestamp(uint256 _conditionId, address _claimer) - public - view - returns (uint256 lastClaimTimestamp, uint256 nextValidClaimTimestamp) - { + function getClaimTimestamp( + uint256 _conditionId, + address _claimer + ) public view returns (uint256 lastClaimTimestamp, uint256 nextValidClaimTimestamp) { lastClaimTimestamp = claimCondition.limitLastClaimTimestamp[_conditionId][_claimer]; if (lastClaimTimestamp != 0) { @@ -484,10 +467,10 @@ contract DropERC20_V2 is } /// @dev Lets a contract admin update the platform fee recipient and bps - function setPlatformFeeInfo(address _platformFeeRecipient, uint256 _platformFeeBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _platformFeeBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_platformFeeBps <= MAX_BPS, "bps <= 10000."); platformFeeBps = uint64(_platformFeeBps); diff --git a/contracts/legacy-contracts/pre-builts/DropERC721_V3.sol b/contracts/legacy-contracts/pre-builts/DropERC721_V3.sol index 2e4dd3591..d8d0afff4 100644 --- a/contracts/legacy-contracts/pre-builts/DropERC721_V3.sol +++ b/contracts/legacy-contracts/pre-builts/DropERC721_V3.sol @@ -12,7 +12,7 @@ import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/structs/BitMapsUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; // ========== Internal imports ========== @@ -42,7 +42,7 @@ contract DropERC721_V3 is IPlatformFee, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, AccessControlEnumerableUpgradeable, ERC721EnumerableUpgradeable, IDropERC721_V3 @@ -206,7 +206,9 @@ contract DropERC721_V3 is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) + function supportsInterface( + bytes4 interfaceId + ) public view virtual @@ -217,12 +219,10 @@ contract DropERC721_V3 is } /// @dev Returns the royalty recipient and amount, given a tokenId and sale price. - function royaltyInfo(uint256 tokenId, uint256 salePrice) - external - view - virtual - returns (address receiver, uint256 royaltyAmount) - { + function royaltyInfo( + uint256 tokenId, + uint256 salePrice + ) external view virtual returns (address receiver, uint256 royaltyAmount) { (address recipient, uint256 bps) = getRoyaltyInfoForToken(tokenId); receiver = recipient; royaltyAmount = (salePrice * bps) / MAX_BPS; @@ -260,11 +260,10 @@ contract DropERC721_V3 is } /// @dev Lets an account with `MINTER_ROLE` reveal the URI for a batch of 'delayed-reveal' NFTs. - function reveal(uint256 index, bytes calldata _key) - external - onlyRole(MINTER_ROLE) - returns (string memory revealedURI) - { + function reveal( + uint256 index, + bytes calldata _key + ) external onlyRole(MINTER_ROLE) returns (string memory revealedURI) { require(index < baseURIIndices.length, "invalid index."); uint256 _index = baseURIIndices[index]; @@ -389,10 +388,10 @@ contract DropERC721_V3 is } /// @dev Lets a contract admin (account with `DEFAULT_ADMIN_ROLE`) set claim conditions. - function setClaimConditions(ClaimCondition[] calldata _phases, bool _resetClaimEligibility) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setClaimConditions( + ClaimCondition[] calldata _phases, + bool _resetClaimEligibility + ) external onlyRole(DEFAULT_ADMIN_ROLE) { uint256 existingStartIndex = claimCondition.currentStartId; uint256 existingPhaseCount = claimCondition.count; @@ -453,11 +452,7 @@ contract DropERC721_V3 is } /// @dev Collects and distributes the primary sale value of NFTs being claimed. - function collectClaimPrice( - uint256 _quantityToClaim, - address _currency, - uint256 _pricePerToken - ) internal { + function collectClaimPrice(uint256 _quantityToClaim, address _currency, uint256 _pricePerToken) internal { if (_pricePerToken == 0) { return; } @@ -474,11 +469,7 @@ contract DropERC721_V3 is } /// @dev Transfers the NFTs being claimed. - function transferClaimedTokens( - address _to, - uint256 _conditionId, - uint256 _quantityBeingClaimed - ) internal { + function transferClaimedTokens(address _to, uint256 _conditionId, uint256 _quantityBeingClaimed) internal { // Update the supply minted under mint condition. claimCondition.phases[_conditionId].supplyClaimed += _quantityBeingClaimed; @@ -598,11 +589,10 @@ contract DropERC721_V3 is } /// @dev Returns the timestamp for when a claimer is eligible for claiming NFTs again. - function getClaimTimestamp(uint256 _conditionId, address _claimer) - public - view - returns (uint256 lastClaimTimestamp, uint256 nextValidClaimTimestamp) - { + function getClaimTimestamp( + uint256 _conditionId, + address _claimer + ) public view returns (uint256 lastClaimTimestamp, uint256 nextValidClaimTimestamp) { lastClaimTimestamp = claimCondition.limitLastClaimTimestamp[_conditionId][_claimer]; unchecked { @@ -655,10 +645,10 @@ contract DropERC721_V3 is } /// @dev Lets a contract admin update the default royalty recipient and bps. - function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setDefaultRoyaltyInfo( + address _royaltyRecipient, + uint256 _royaltyBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_royaltyBps <= MAX_BPS, "> MAX_BPS"); royaltyRecipient = _royaltyRecipient; @@ -681,10 +671,10 @@ contract DropERC721_V3 is } /// @dev Lets a contract admin update the platform fee recipient and bps - function setPlatformFeeInfo(address _platformFeeRecipient, uint256 _platformFeeBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _platformFeeBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_platformFeeBps <= MAX_BPS, "> MAX_BPS."); platformFeeBps = uint16(_platformFeeBps); @@ -722,9 +712,10 @@ contract DropERC721_V3 is function _beforeTokenTransfer( address from, address to, - uint256 tokenId + uint256 tokenId, + uint256 batchSize ) internal virtual override(ERC721EnumerableUpgradeable) { - super._beforeTokenTransfer(from, to, tokenId); + super._beforeTokenTransfer(from, to, tokenId, batchSize); // if transfer is restricted on the contract, we still want to allow burning and minting if (!hasRole(TRANSFER_ROLE, address(0)) && from != address(0) && to != address(0)) { diff --git a/contracts/legacy-contracts/pre-builts/SignatureDrop_V4.sol b/contracts/legacy-contracts/pre-builts/SignatureDrop_V4.sol index 7bd07026a..a49c089cc 100644 --- a/contracts/legacy-contracts/pre-builts/SignatureDrop_V4.sol +++ b/contracts/legacy-contracts/pre-builts/SignatureDrop_V4.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.11; // ========== External imports ========== -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; @@ -42,7 +42,7 @@ contract SignatureDrop_V4 is DropSinglePhase_V1, SignatureMintERC721Upgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC721AUpgradeable { using StringsUpgradeable for uint256; @@ -114,13 +114,9 @@ contract SignatureDrop_V4 is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId; } @@ -156,11 +152,10 @@ contract SignatureDrop_V4 is } /// @dev Lets an account with `MINTER_ROLE` reveal the URI for a batch of 'delayed-reveal' NFTs. - function reveal(uint256 _index, bytes calldata _key) - external - onlyRole(minterRole) - returns (string memory revealedURI) - { + function reveal( + uint256 _index, + bytes calldata _key + ) external onlyRole(minterRole) returns (string memory revealedURI) { uint256 batchId = getBatchIdAtIndex(_index); revealedURI = getRevealURI(batchId, _key); @@ -175,11 +170,10 @@ contract SignatureDrop_V4 is //////////////////////////////////////////////////////////////*/ /// @dev Claim lazy minted tokens via signature. - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable returns (address signer) { uint256 tokenIdToMint = _currentIndex; if (tokenIdToMint + _req.quantity > nextTokenIdToLazyMint) { revert("Not enough tokens"); @@ -251,11 +245,10 @@ contract SignatureDrop_V4 is } /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) { startTokenId = _currentIndex; _safeMint(_to, _quantityBeingClaimed); } diff --git a/contracts/legacy-contracts/smart-wallet/interface/IAccountPermissions_V1.sol b/contracts/legacy-contracts/smart-wallet/interface/IAccountPermissions_V1.sol index 635d382b5..3a2124861 100644 --- a/contracts/legacy-contracts/smart-wallet/interface/IAccountPermissions_V1.sol +++ b/contracts/legacy-contracts/smart-wallet/interface/IAccountPermissions_V1.sol @@ -98,10 +98,10 @@ interface IAccountPermissions_V1 { function getAllAdmins() external view returns (address[] memory admins); /// @dev Verifies that a request is signed by an authorized account. - function verifySignerPermissionRequest(SignerPermissionRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verifySignerPermissionRequest( + SignerPermissionRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /*/////////////////////////////////////////////////////////////// External functions diff --git a/contracts/lib/Address.sol b/contracts/lib/Address.sol new file mode 100644 index 000000000..41c55c188 --- /dev/null +++ b/contracts/lib/Address.sol @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.0; + +/// @author thirdweb + +library Address { + /** + * @dev Returns whether an address is a smart contract. + * + * `account` MAY NOT be a smart contract when this function returns `true` + * Other than EOAs, `isContract` will return `false` for: + * + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed + * - a contract in construction (since the code is only stored at the end of + * the constructor execution) + */ + function isContract(address account) internal view returns (bool) { + return account.code.length > 0; + } + + /// @dev Sends `amount` of wei to `recipient`. + function sendValue(address payable recipient, uint256 amount) internal { + require(address(this).balance >= amount, "Address: insufficient balance"); + + (bool success, ) = recipient.call{ value: amount }(""); + require(success, "Address: unable to send value, recipient may have reverted"); + } + + /// @dev Performs a low-level call on `target` with `data`. + function functionCall(address target, bytes memory data) internal returns (bytes memory) { + return functionCall(target, data, "Address: low-level call failed"); + } + + /// @dev Performs a call on `target` with `data`, with `errorMessage` as a fallback + /// revert reason when `target` reverts. + function functionCall( + address target, + bytes memory data, + string memory errorMessage + ) internal returns (bytes memory) { + return functionCallWithValue(target, data, 0, errorMessage); + } + + /// @dev Performs a low-level call on `target` with `data` and `value`. + function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { + return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); + } + + /// @dev Performs a static call on `target` with `data` and `value`, with `errorMessage` as a fallback + /// revert reason when `target` reverts. + function functionCallWithValue( + address target, + bytes memory data, + uint256 value, + string memory errorMessage + ) internal returns (bytes memory) { + require(address(this).balance >= value, "Address: insufficient balance for call"); + require(isContract(target) && !isContract(msg.sender), "Address: invalid call"); + + (bool success, bytes memory returndata) = target.call{ value: value }(data); + return verifyCallResult(success, returndata, errorMessage); + } + + /// @dev Performs a static call on `target` with `data`. + function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { + return functionStaticCall(target, data, "Address: low-level static call failed"); + } + + /// @dev Performs a static call on `target` with `data`, with `errorMessage` as a fallback + /// revert reason when `target` reverts. + function functionStaticCall( + address target, + bytes memory data, + string memory errorMessage + ) internal view returns (bytes memory) { + require(isContract(target) && !isContract(msg.sender), "Address: invalid static call"); + + (bool success, bytes memory returndata) = target.staticcall(data); + return verifyCallResult(success, returndata, errorMessage); + } + + /// @dev Performs a delegate call on `target` with `data`. + function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { + return functionDelegateCall(target, data, "Address: low-level delegate call failed"); + } + + /// @dev Performs a delegate call on `target` with `data`, with `errorMessage` as a fallback + /// revert reason when `target` reverts. + function functionDelegateCall( + address target, + bytes memory data, + string memory errorMessage + ) internal returns (bytes memory) { + require(isContract(target) && !isContract(msg.sender), "Address: invalid delegate call"); + + (bool success, bytes memory returndata) = target.delegatecall(data); + return verifyCallResult(success, returndata, errorMessage); + } + + /// @dev Verifies that a low level call was successful. + function verifyCallResult( + bool success, + bytes memory returndata, + string memory errorMessage + ) internal pure returns (bytes memory) { + if (success) { + return returndata; + } else { + // Look for revert reason and bubble it up if present + if (returndata.length > 0) { + // The easiest way to bubble the revert reason is using memory via assembly + + assembly { + let returndata_size := mload(returndata) + revert(add(32, returndata), returndata_size) + } + } else { + revert(errorMessage); + } + } + } +} diff --git a/contracts/lib/TWBitMaps.sol b/contracts/lib/BitMaps.sol similarity index 89% rename from contracts/lib/TWBitMaps.sol rename to contracts/lib/BitMaps.sol index fde0a1030..00336dc07 100644 --- a/contracts/lib/TWBitMaps.sol +++ b/contracts/lib/BitMaps.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: Apache 2.0 +// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; /// @author thirdweb @@ -7,7 +7,7 @@ pragma solidity ^0.8.0; * @dev Library for managing uint256 to bool mapping in a compact and efficient way, providing the keys are sequential. * Largely inspired by Uniswap's [merkle-distributor](https://github.com/Uniswap/merkle-distributor/blob/master/contracts/MerkleDistributor.sol). */ -library TWBitMaps { +library BitMaps { struct BitMap { mapping(uint256 => uint256) _data; } @@ -24,11 +24,7 @@ library TWBitMaps { /** * @dev Sets the bit at `index` to the boolean `value`. */ - function setTo( - BitMap storage bitmap, - uint256 index, - bool value - ) internal { + function setTo(BitMap storage bitmap, uint256 index, bool value) internal { if (value) { set(bitmap, index); } else { diff --git a/contracts/lib/BytesLib.sol b/contracts/lib/BytesLib.sol index 5fe71410b..6cc1ebdaf 100644 --- a/contracts/lib/BytesLib.sol +++ b/contracts/lib/BytesLib.sol @@ -1,15 +1,8 @@ -// SPDX-License-Identifier: Apache 2.0 -/* - * @title Solidity Bytes Arrays Utils - * @author Gonçalo Sá - * - * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity. - * The library lets you concatenate, slice and type cast bytes arrays both in memory and storage. - * - * Credits: https://github.com/GNSPS/solidity-bytes-utils/blob/master/contracts/BytesLib.sol - */ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.0; -pragma solidity >=0.8.0 <0.9.0; +/// @author thirdweb +/// Credits: https://github.com/GNSPS/solidity-bytes-utils/blob/master/contracts/BytesLib.sol library BytesLib { function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) { diff --git a/contracts/lib/CurrencyTransferLib.sol b/contracts/lib/CurrencyTransferLib.sol index 32a46f7e3..1cb9cf8d9 100644 --- a/contracts/lib/CurrencyTransferLib.sol +++ b/contracts/lib/CurrencyTransferLib.sol @@ -5,8 +5,7 @@ pragma solidity ^0.8.0; // Helper interfaces import { IWETH } from "../infra/interface/IWETH.sol"; - -import "../external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol"; +import { SafeERC20, IERC20 } from "../external-deps/openzeppelin/token/ERC20/utils/SafeERC20.sol"; library CurrencyTransferLib { using SafeERC20 for IERC20; @@ -15,12 +14,7 @@ library CurrencyTransferLib { address public constant NATIVE_TOKEN = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; /// @dev Transfers a given amount of currency. - function transferCurrency( - address _currency, - address _from, - address _to, - uint256 _amount - ) internal { + function transferCurrency(address _currency, address _from, address _to, uint256 _amount) internal { if (_amount == 0) { return; } @@ -62,12 +56,7 @@ library CurrencyTransferLib { } /// @dev Transfer `amount` of ERC20 token from `from` to `to`. - function safeTransferERC20( - address _currency, - address _from, - address _to, - uint256 _amount - ) internal { + function safeTransferERC20(address _currency, address _from, address _to, uint256 _amount) internal { if (_from == _to) { return; } @@ -88,11 +77,7 @@ library CurrencyTransferLib { } /// @dev Transfers `amount` of native token to `to`. (With native token wrapping) - function safeTransferNativeTokenWithWrapper( - address to, - uint256 value, - address _nativeTokenWrapper - ) internal { + function safeTransferNativeTokenWithWrapper(address to, uint256 value, address _nativeTokenWrapper) internal { // solhint-disable avoid-low-level-calls // slither-disable-next-line low-level-calls (bool success, ) = to.call{ value: value }(""); diff --git a/contracts/lib/MerkleProof.sol b/contracts/lib/MerkleProof.sol index f5df67ee3..c71db5cfe 100644 --- a/contracts/lib/MerkleProof.sol +++ b/contracts/lib/MerkleProof.sol @@ -3,29 +3,8 @@ pragma solidity ^0.8.0; /// @author thirdweb -/** - * @dev These functions deal with verification of Merkle Trees proofs. - * - * The proofs can be generated using the JavaScript library - * https://github.com/miguelmota/merkletreejs[merkletreejs]. - * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. - * - * See `test/utils/cryptography/MerkleProof.test.js` for some examples. - * - * Source: https://github.com/ensdomains/governance/blob/master/contracts/MerkleProof.sol - */ library MerkleProof { - /** - * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree - * defined by `root`. For this, a `proof` must be provided, containing - * sibling hashes on the branch from the leaf to the root of the tree. Each - * pair of leaves and each pair of pre-images are assumed to be sorted. - */ - function verify( - bytes32[] memory proof, - bytes32 root, - bytes32 leaf - ) internal pure returns (bool, uint256) { + function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool, uint256) { bytes32 computedHash = leaf; uint256 index = 0; diff --git a/contracts/lib/NFTMetadataRendererLib.sol b/contracts/lib/NFTMetadataRenderer.sol similarity index 94% rename from contracts/lib/NFTMetadataRendererLib.sol rename to contracts/lib/NFTMetadataRenderer.sol index 0cc7ff845..4fd657159 100644 --- a/contracts/lib/NFTMetadataRendererLib.sol +++ b/contracts/lib/NFTMetadataRenderer.sol @@ -1,12 +1,12 @@ -// SPDX-License-Identifier: Apache 2.0 -pragma solidity ^0.8.10; +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.0; /* solhint-disable quotes */ /// @author thirdweb /// credits: Zora -import "./TWStrings.sol"; +import "./Strings.sol"; import "../external-deps/openzeppelin/utils/Base64.sol"; /// NFT metadata library for rendering metadata associated with editions @@ -49,14 +49,14 @@ library NFTMetadataRenderer { '{"name": "', name, " ", - TWStrings.toString(tokenOfEdition), + Strings.toString(tokenOfEdition), '", "', 'description": "', description, '", "', mediaData, 'properties": {"number": ', - TWStrings.toString(tokenOfEdition), + Strings.toString(tokenOfEdition), ', "name": "', name, '"}}' diff --git a/contracts/lib/StorageSlot.sol b/contracts/lib/StorageSlot.sol new file mode 100644 index 000000000..9fe0bb02e --- /dev/null +++ b/contracts/lib/StorageSlot.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.0; + +/// @author thirdweb + +library StorageSlot { + struct AddressSlot { + address value; + } + + struct BooleanSlot { + bool value; + } + + struct Bytes32Slot { + bytes32 value; + } + + struct Uint256Slot { + uint256 value; + } + + /// @dev Returns an `AddressSlot` with member `value` located at `slot`. + function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } + + /// @dev Returns an `BooleanSlot` with member `value` located at `slot`. + function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } + + /// @dev Returns an `Bytes32Slot` with member `value` located at `slot`. + function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } + + /// @dev Returns an `Uint256Slot` with member `value` located at `slot`. + function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { + /// @solidity memory-safe-assembly + assembly { + r.slot := slot + } + } +} diff --git a/contracts/lib/StringSet.sol b/contracts/lib/StringSet.sol new file mode 100644 index 000000000..630300bd1 --- /dev/null +++ b/contracts/lib/StringSet.sol @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.0; + +/// @author thirdweb + +library StringSet { + /** + * @param _values storage of set values + * @param _indexes position of the value in the array + 1. (Note: index 0 means a value is not in the set.) + */ + struct Set { + string[] _values; + mapping(string => uint256) _indexes; + } + + /// @dev Add a value to a set. + /// Returns `true` if the value is not already present in set. + function _add(Set storage set, string memory value) private returns (bool) { + if (!_contains(set, value)) { + set._values.push(value); + + set._indexes[value] = set._values.length; + return true; + } else { + return false; + } + } + + /// @dev Removes a value from a set. + /// Returns `true` if the value was present and so, successfully removed from the set. + function _remove(Set storage set, string memory value) private returns (bool) { + uint256 valueIndex = set._indexes[value]; + + if (valueIndex != 0) { + uint256 toDeleteIndex = valueIndex - 1; + uint256 lastIndex = set._values.length - 1; + + if (lastIndex != toDeleteIndex) { + string memory lastValue = set._values[lastIndex]; + + set._values[toDeleteIndex] = lastValue; + + set._indexes[lastValue] = valueIndex; + } + + set._values.pop(); + + delete set._indexes[value]; + + return true; + } else { + return false; + } + } + + /// @dev Returns whether `value` is in the set. + function _contains(Set storage set, string memory value) private view returns (bool) { + return set._indexes[value] != 0; + } + + /// @dev Returns the number of elements in the set. + function _length(Set storage set) private view returns (uint256) { + return set._values.length; + } + + /// @dev Returns the element stored at position `index` in the set. + /// Note: the ordering of elements is not guaranteed to be fixed. It is unsafe to rely on + /// or compute based on the index of set elements. + function _at(Set storage set, uint256 index) private view returns (string memory) { + return set._values[index]; + } + + /// @dev Returns the values stored in the set. + function _values(Set storage set) private view returns (string[] memory) { + return set._values; + } + + /// @dev Add `value` to the set. + function add(Set storage set, string memory value) internal returns (bool) { + return _add(set, value); + } + + /// @dev Remove `value` from the set. + function remove(Set storage set, string memory value) internal returns (bool) { + return _remove(set, value); + } + + /// @dev Returns whether `value` is in the set. + function contains(Set storage set, string memory value) internal view returns (bool) { + return _contains(set, value); + } + + /// @dev Returns the number of elements in the set. + function length(Set storage set) internal view returns (uint256) { + return _length(set); + } + + /// @dev Returns the element stored at position `index` in the set. + function at(Set storage set, uint256 index) internal view returns (string memory) { + return _at(set, index); + } + + /// @dev Returns the values stored in the set. + function values(Set storage set) internal view returns (string[] memory) { + return _values(set); + } +} diff --git a/contracts/lib/TWStrings.sol b/contracts/lib/Strings.sol similarity index 99% rename from contracts/lib/TWStrings.sol rename to contracts/lib/Strings.sol index 0b48fac3e..499df4583 100644 --- a/contracts/lib/TWStrings.sol +++ b/contracts/lib/Strings.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: Apache 2.0 +// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; /// @author thirdweb @@ -6,7 +6,7 @@ pragma solidity ^0.8.0; /** * @dev String operations. */ -library TWStrings { +library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** diff --git a/contracts/lib/TWAddress.sol b/contracts/lib/TWAddress.sol deleted file mode 100644 index 0d7b31449..000000000 --- a/contracts/lib/TWAddress.sol +++ /dev/null @@ -1,222 +0,0 @@ -// SPDX-License-Identifier: Apache 2.0 -pragma solidity ^0.8.0; - -/// @author thirdweb - -/** - * @dev Collection of functions related to the address type - */ -library TWAddress { - /** - * @dev Returns true if `account` is a contract. - * - * [IMPORTANT] - * ==== - * It is unsafe to assume that an address for which this function returns - * false is an externally-owned account (EOA) and not a contract. - * - * Among others, `isContract` will return false for the following - * types of addresses: - * - * - an externally-owned account - * - a contract in construction - * - an address where a contract will be created - * - an address where a contract lived, but was destroyed - * ==== - * - * [IMPORTANT] - * ==== - * You shouldn't rely on `isContract` to protect against flash loan attacks! - * - * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets - * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract - * constructor. - * ==== - */ - function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize/address.code.length, which returns 0 - // for contracts in construction, since the code is only stored at the end - // of the constructor execution. - - return account.code.length > 0; - } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * [EIP1884](https://eips.ethereum.org/EIPS/eip-1884) increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - (bool success, ) = recipient.call{ value: amount }(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain `call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value, - string memory errorMessage - ) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - require(isContract(target), "Address: call to non-contract"); - - (bool success, bytes memory returndata) = target.call{ value: value }(data); - return verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { - return functionStaticCall(target, data, "Address: low-level static call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall( - address target, - bytes memory data, - string memory errorMessage - ) internal view returns (bytes memory) { - require(isContract(target), "Address: static call to non-contract"); - - (bool success, bytes memory returndata) = target.staticcall(data); - return verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a delegate call. - * - * _Available since v3.4._ - */ - function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { - return functionDelegateCall(target, data, "Address: low-level delegate call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a delegate call. - * - * _Available since v3.4._ - */ - function functionDelegateCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - require(isContract(target), "Address: delegate call to non-contract"); - - (bool success, bytes memory returndata) = target.delegatecall(data); - return verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the - * revert reason using the provided one. - * - * _Available since v4.3._ - */ - function verifyCallResult( - bool success, - bytes memory returndata, - string memory errorMessage - ) internal pure returns (bytes memory) { - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } -} diff --git a/contracts/lib/TWStorageSlot.sol b/contracts/lib/TWStorageSlot.sol deleted file mode 100644 index 26b86fb8c..000000000 --- a/contracts/lib/TWStorageSlot.sol +++ /dev/null @@ -1,88 +0,0 @@ -// SPDX-License-Identifier: Apache 2.0 -pragma solidity ^0.8.0; - -/// @author thirdweb - -/** - * @dev Library for reading and writing primitive types to specific storage slots. - * - * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. - * This library helps with reading and writing to such slots without the need for inline assembly. - * - * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. - * - * Example usage to set ERC1967 implementation slot: - * ``` - * contract ERC1967 { - * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - * - * function _getImplementation() internal view returns (address) { - * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; - * } - * - * function _setImplementation(address newImplementation) internal { - * require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract"); - * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; - * } - * } - * ``` - * - * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._ - */ -library TWStorageSlot { - struct AddressSlot { - address value; - } - - struct BooleanSlot { - bool value; - } - - struct Bytes32Slot { - bytes32 value; - } - - struct Uint256Slot { - uint256 value; - } - - /** - * @dev Returns an `AddressSlot` with member `value` located at `slot`. - */ - function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { - /// @solidity memory-safe-assembly - assembly { - r.slot := slot - } - } - - /** - * @dev Returns an `BooleanSlot` with member `value` located at `slot`. - */ - function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { - /// @solidity memory-safe-assembly - assembly { - r.slot := slot - } - } - - /** - * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. - */ - function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { - /// @solidity memory-safe-assembly - assembly { - r.slot := slot - } - } - - /** - * @dev Returns an `Uint256Slot` with member `value` located at `slot`. - */ - function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { - /// @solidity memory-safe-assembly - assembly { - r.slot := slot - } - } -} diff --git a/contracts/lib/TWStringSet.sol b/contracts/lib/TWStringSet.sol deleted file mode 100644 index 2ca77b527..000000000 --- a/contracts/lib/TWStringSet.sol +++ /dev/null @@ -1,172 +0,0 @@ -// SPDX-License-Identifier: Apache 2.0 -pragma solidity ^0.8.0; - -/// @author thirdweb - -library TWStringSet { - struct Set { - // Storage of set values - string[] _values; - // Position of the value in the `values` array, plus 1 because index 0 - // means a value is not in the set. - mapping(string => uint256) _indexes; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function _add(Set storage set, string memory value) private returns (bool) { - if (!_contains(set, value)) { - set._values.push(value); - // The value is stored at length-1, but we add 1 to all indexes - // and use 0 as a sentinel value - set._indexes[value] = set._values.length; - return true; - } else { - return false; - } - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function _remove(Set storage set, string memory value) private returns (bool) { - // We read and store the value's index to prevent multiple reads from the same storage slot - uint256 valueIndex = set._indexes[value]; - - if (valueIndex != 0) { - // Equivalent to contains(set, value) - // To delete an element from the _values array in O(1), we swap the element to delete with the last one in - // the array, and then remove the last element (sometimes called as 'swap and pop'). - // This modifies the order of the array, as noted in {at}. - - uint256 toDeleteIndex = valueIndex - 1; - uint256 lastIndex = set._values.length - 1; - - if (lastIndex != toDeleteIndex) { - string memory lastValue = set._values[lastIndex]; - - // Move the last value to the index where the value to delete is - set._values[toDeleteIndex] = lastValue; - // Update the index for the moved value - set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex - } - - // Delete the slot where the moved value was stored - set._values.pop(); - - // Delete the index for the deleted slot - delete set._indexes[value]; - - return true; - } else { - return false; - } - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function _contains(Set storage set, string memory value) private view returns (bool) { - return set._indexes[value] != 0; - } - - /** - * @dev Returns the number of values on the set. O(1). - */ - function _length(Set storage set) private view returns (uint256) { - return set._values.length; - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function _at(Set storage set, uint256 index) private view returns (string memory) { - return set._values[index]; - } - - /** - * @dev Return the entire set in an array - * - * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed - * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that - * this function has an unbounded cost, and using it as part of a state-changing function may render the function - * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. - */ - function _values(Set storage set) private view returns (string[] memory) { - return set._values; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function add(Set storage set, string memory value) internal returns (bool) { - return _add(set, value); - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function remove(Set storage set, string memory value) internal returns (bool) { - return _remove(set, value); - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function contains(Set storage set, string memory value) internal view returns (bool) { - return _contains(set, value); - } - - /** - * @dev Returns the number of values in the set. O(1). - */ - function length(Set storage set) internal view returns (uint256) { - return _length(set); - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function at(Set storage set, uint256 index) internal view returns (string memory) { - return _at(set, index); - } - - /** - * @dev Return the entire set in an array - * - * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed - * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that - * this function has an unbounded cost, and using it as part of a state-changing function may render the function - * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. - */ - function values(Set storage set) internal view returns (string[] memory) { - return _values(set); - } -} diff --git a/contracts/prebuilts/account/dynamic/DynamicAccount.sol b/contracts/prebuilts/account/dynamic/DynamicAccount.sol index 49301309d..0d5ac3b26 100644 --- a/contracts/prebuilts/account/dynamic/DynamicAccount.sol +++ b/contracts/prebuilts/account/dynamic/DynamicAccount.sol @@ -23,10 +23,10 @@ contract DynamicAccount is AccountCore, BaseRouter { Constructor and Initializer //////////////////////////////////////////////////////////////*/ - constructor(IEntryPoint _entrypoint, Extension[] memory _defaultExtensions) - AccountCore(_entrypoint, msg.sender) - BaseRouter(_defaultExtensions) - { + constructor( + IEntryPoint _entrypoint, + Extension[] memory _defaultExtensions + ) AccountCore(_entrypoint, msg.sender) BaseRouter(_defaultExtensions) { _disableInitializers(); } diff --git a/contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol b/contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol index ea5c320da..864091a6b 100644 --- a/contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol +++ b/contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol @@ -28,7 +28,10 @@ contract DynamicAccountFactory is BaseAccountFactory, ContractMetadata, Permissi Constructor //////////////////////////////////////////////////////////////*/ - constructor(address _defaultAdmin, IExtension.Extension[] memory _defaultExtensions) + constructor( + address _defaultAdmin, + IExtension.Extension[] memory _defaultExtensions + ) BaseAccountFactory( payable(address(new DynamicAccount(IEntryPoint(ENTRYPOINT_ADDRESS), _defaultExtensions))), ENTRYPOINT_ADDRESS @@ -42,11 +45,7 @@ contract DynamicAccountFactory is BaseAccountFactory, ContractMetadata, Permissi //////////////////////////////////////////////////////////////*/ /// @dev Called in `createAccount`. Initializes the account contract created in `createAccount`. - function _initializeAccount( - address _account, - address _admin, - bytes calldata _data - ) internal override { + function _initializeAccount(address _account, address _admin, bytes calldata _data) internal override { DynamicAccount(payable(_account)).initialize(_admin, _data); } diff --git a/contracts/prebuilts/account/interface/IAggregator.sol b/contracts/prebuilts/account/interface/IAggregator.sol index 51a209d47..73774f5e7 100644 --- a/contracts/prebuilts/account/interface/IAggregator.sol +++ b/contracts/prebuilts/account/interface/IAggregator.sol @@ -30,8 +30,7 @@ interface IAggregator { * @param userOps array of UserOperations to collect the signatures from. * @return aggregatedSignature the aggregated signature */ - function aggregateSignatures(UserOperation[] calldata userOps) - external - view - returns (bytes memory aggregatedSignature); + function aggregateSignatures( + UserOperation[] calldata userOps + ) external view returns (bytes memory aggregatedSignature); } diff --git a/contracts/prebuilts/account/interface/IEntrypoint.sol b/contracts/prebuilts/account/interface/IEntrypoint.sol index 7b954802d..fa6317a54 100644 --- a/contracts/prebuilts/account/interface/IEntrypoint.sol +++ b/contracts/prebuilts/account/interface/IEntrypoint.sol @@ -153,8 +153,10 @@ interface IEntryPoint is IStakeManager, INonceManager { * @param opsPerAggregator the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts) * @param beneficiary the address to receive the fees */ - function handleAggregatedOps(UserOpsPerAggregator[] calldata opsPerAggregator, address payable beneficiary) - external; + function handleAggregatedOps( + UserOpsPerAggregator[] calldata opsPerAggregator, + address payable beneficiary + ) external; /** * generate a request Id - unique identifier for this request. @@ -218,9 +220,5 @@ interface IEntryPoint is IStakeManager, INonceManager { * are set to the return from that call. * @param targetCallData callData to pass to target address */ - function simulateHandleOp( - UserOperation calldata op, - address target, - bytes calldata targetCallData - ) external; + function simulateHandleOp(UserOperation calldata op, address target, bytes calldata targetCallData) external; } diff --git a/contracts/prebuilts/account/interface/IPaymaster.sol b/contracts/prebuilts/account/interface/IPaymaster.sol index bdd549985..0f5f623b6 100644 --- a/contracts/prebuilts/account/interface/IPaymaster.sol +++ b/contracts/prebuilts/account/interface/IPaymaster.sol @@ -49,9 +49,5 @@ interface IPaymaster { * @param context - the context value returned by validatePaymasterUserOp * @param actualGasCost - actual gas used so far (without this postOp call). */ - function postOp( - PostOpMode mode, - bytes calldata context, - uint256 actualGasCost - ) external; + function postOp(PostOpMode mode, bytes calldata context, uint256 actualGasCost) external; } diff --git a/contracts/prebuilts/account/managed/ManagedAccountFactory.sol b/contracts/prebuilts/account/managed/ManagedAccountFactory.sol index f46e1f2dd..70bfd832e 100644 --- a/contracts/prebuilts/account/managed/ManagedAccountFactory.sol +++ b/contracts/prebuilts/account/managed/ManagedAccountFactory.sol @@ -47,11 +47,7 @@ contract ManagedAccountFactory is BaseAccountFactory, ContractMetadata, Permissi //////////////////////////////////////////////////////////////*/ /// @dev Called in `createAccount`. Initializes the account contract created in `createAccount`. - function _initializeAccount( - address _account, - address _admin, - bytes calldata _data - ) internal override { + function _initializeAccount(address _account, address _admin, bytes calldata _data) internal override { ManagedAccount(payable(_account)).initialize(_admin, _data); } diff --git a/contracts/prebuilts/account/non-upgradeable/Account.sol b/contracts/prebuilts/account/non-upgradeable/Account.sol index f934c86d0..adc4bb3e3 100644 --- a/contracts/prebuilts/account/non-upgradeable/Account.sol +++ b/contracts/prebuilts/account/non-upgradeable/Account.sol @@ -63,13 +63,10 @@ contract Account is AccountCore, ContractMetadata, ERC1271, ERC721Holder, ERC115 } /// @notice See EIP-1271 - function isValidSignature(bytes32 _message, bytes memory _signature) - public - view - virtual - override - returns (bytes4 magicValue) - { + function isValidSignature( + bytes32 _message, + bytes memory _signature + ) public view virtual override returns (bytes4 magicValue) { bytes32 messageHash = getMessageHash(abi.encode(_message)); address signer = messageHash.recover(_signature); @@ -105,11 +102,7 @@ contract Account is AccountCore, ContractMetadata, ERC1271, ERC721Holder, ERC115 //////////////////////////////////////////////////////////////*/ /// @notice Executes a transaction (called directly from an admin, or by entryPoint) - function execute( - address _target, - uint256 _value, - bytes calldata _calldata - ) external virtual onlyAdminOrEntrypoint { + function execute(address _target, uint256 _value, bytes calldata _calldata) external virtual onlyAdminOrEntrypoint { _registerOnFactory(); _call(_target, _value, _calldata); } diff --git a/contracts/prebuilts/account/non-upgradeable/AccountFactory.sol b/contracts/prebuilts/account/non-upgradeable/AccountFactory.sol index e570f0b4b..017b2711a 100644 --- a/contracts/prebuilts/account/non-upgradeable/AccountFactory.sol +++ b/contracts/prebuilts/account/non-upgradeable/AccountFactory.sol @@ -30,9 +30,10 @@ contract AccountFactory is BaseAccountFactory, ContractMetadata, PermissionsEnum Constructor //////////////////////////////////////////////////////////////*/ - constructor(address _defaultAdmin, IEntryPoint _entrypoint) - BaseAccountFactory(address(new Account(_entrypoint, address(this))), address(_entrypoint)) - { + constructor( + address _defaultAdmin, + IEntryPoint _entrypoint + ) BaseAccountFactory(address(new Account(_entrypoint, address(this))), address(_entrypoint)) { _setupRole(DEFAULT_ADMIN_ROLE, _defaultAdmin); } @@ -41,11 +42,7 @@ contract AccountFactory is BaseAccountFactory, ContractMetadata, PermissionsEnum //////////////////////////////////////////////////////////////*/ /// @dev Called in `createAccount`. Initializes the account contract created in `createAccount`. - function _initializeAccount( - address _account, - address _admin, - bytes calldata _data - ) internal override { + function _initializeAccount(address _account, address _admin, bytes calldata _data) internal override { Account(payable(_account)).initialize(_admin, _data); } diff --git a/contracts/prebuilts/account/token-bound-account/TokenBoundAccount.sol b/contracts/prebuilts/account/token-bound-account/TokenBoundAccount.sol index 3c7acc8bf..3ed222fcf 100644 --- a/contracts/prebuilts/account/token-bound-account/TokenBoundAccount.sol +++ b/contracts/prebuilts/account/token-bound-account/TokenBoundAccount.sol @@ -108,13 +108,10 @@ contract TokenBoundAccount is } /// @notice See EIP-1271 - function isValidSignature(bytes32 _hash, bytes memory _signature) - public - view - virtual - override - returns (bytes4 magicValue) - { + function isValidSignature( + bytes32 _hash, + bytes memory _signature + ) public view virtual override returns (bytes4 magicValue) { address signer = _hash.recover(_signature); if (owner() == signer) { @@ -136,15 +133,7 @@ contract TokenBoundAccount is entryPoint().withdrawTo(withdrawAddress, amount); } - function token() - external - view - returns ( - uint256 chainId, - address tokenContract, - uint256 tokenId - ) - { + function token() external view returns (uint256 chainId, address tokenContract, uint256 tokenId) { return ERC6551AccountLib.token(); } @@ -167,11 +156,7 @@ contract TokenBoundAccount is } /// @notice Executes a transaction (called directly from an admin, or by entryPoint) - function execute( - address _target, - uint256 _value, - bytes calldata _calldata - ) external virtual onlyAdminOrEntrypoint { + function execute(address _target, uint256 _value, bytes calldata _calldata) external virtual onlyAdminOrEntrypoint { _call(_target, _value, _calldata); } @@ -212,12 +197,10 @@ contract TokenBoundAccount is } /// @notice Validates the signature of a user operation. - function _validateSignature(UserOperation calldata userOp, bytes32 userOpHash) - internal - virtual - override - returns (uint256 validationData) - { + function _validateSignature( + UserOperation calldata userOp, + bytes32 userOpHash + ) internal virtual override returns (uint256 validationData) { bytes32 hash = userOpHash.toEthSignedMessageHash(); address signer = hash.recover(userOp.signature); @@ -240,15 +223,9 @@ contract TokenBoundAccount is _value = abi.decode(data[36:68], (uint256)); } - function decodeExecuteBatchCalldata(bytes calldata data) - internal - pure - returns ( - address[] memory _targets, - uint256[] memory _values, - bytes[] memory _callData - ) - { + function decodeExecuteBatchCalldata( + bytes calldata data + ) internal pure returns (address[] memory _targets, uint256[] memory _values, bytes[] memory _callData) { require(data.length >= 4 + 32 + 32 + 32, "Data too short"); (_targets, _values, _callData) = abi.decode(data[4:], (address[], uint256[], bytes[])); diff --git a/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551AccountLib.sol b/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551AccountLib.sol index ae4dec027..ff99e843c 100644 --- a/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551AccountLib.sol +++ b/contracts/prebuilts/account/token-bound-account/erc6551-utils/ERC6551AccountLib.sol @@ -20,15 +20,7 @@ library ERC6551AccountLib { return Create2.computeAddress(bytes32(_salt), bytecodeHash, registry); } - function token() - internal - view - returns ( - uint256, - address, - uint256 - ) - { + function token() internal view returns (uint256, address, uint256) { bytes memory footer = new bytes(0x60); assembly { diff --git a/contracts/prebuilts/account/token-bound-account/erc6551-utils/IERC6551Account.sol b/contracts/prebuilts/account/token-bound-account/erc6551-utils/IERC6551Account.sol index e64484278..160e27e7b 100644 --- a/contracts/prebuilts/account/token-bound-account/erc6551-utils/IERC6551Account.sol +++ b/contracts/prebuilts/account/token-bound-account/erc6551-utils/IERC6551Account.sol @@ -22,14 +22,7 @@ interface IERC6551Account { * @return tokenContract The contract address of the token * @return tokenId The ID of the token */ - function token() - external - view - returns ( - uint256 chainId, - address tokenContract, - uint256 tokenId - ); + function token() external view returns (uint256 chainId, address tokenContract, uint256 tokenId); /** * @dev Returns a value that SHOULD be modified each time the account changes state diff --git a/contracts/prebuilts/account/utils/AccountCore.sol b/contracts/prebuilts/account/utils/AccountCore.sol index 79b31ec37..d62dd4999 100644 --- a/contracts/prebuilts/account/utils/AccountCore.sol +++ b/contracts/prebuilts/account/utils/AccountCore.sol @@ -198,27 +198,19 @@ contract AccountCore is IAccountCore, Initializable, Multicall, BaseAccount, Acc _value = abi.decode(data[36:68], (uint256)); } - function decodeExecuteBatchCalldata(bytes calldata data) - internal - pure - returns ( - address[] memory _targets, - uint256[] memory _values, - bytes[] memory _callData - ) - { + function decodeExecuteBatchCalldata( + bytes calldata data + ) internal pure returns (address[] memory _targets, uint256[] memory _values, bytes[] memory _callData) { require(data.length >= 4 + 32 + 32 + 32, "!Data"); (_targets, _values, _callData) = abi.decode(data[4:], (address[], uint256[], bytes[])); } /// @notice Validates the signature of a user operation. - function _validateSignature(UserOperation calldata userOp, bytes32 userOpHash) - internal - virtual - override - returns (uint256 validationData) - { + function _validateSignature( + UserOperation calldata userOp, + bytes32 userOpHash + ) internal virtual override returns (uint256 validationData) { bytes32 hash = userOpHash.toEthSignedMessageHash(); address signer = hash.recover(userOp.signature); diff --git a/contracts/prebuilts/account/utils/AccountExtension.sol b/contracts/prebuilts/account/utils/AccountExtension.sol index 1661e5512..c9aad670e 100644 --- a/contracts/prebuilts/account/utils/AccountExtension.sol +++ b/contracts/prebuilts/account/utils/AccountExtension.sol @@ -65,13 +65,10 @@ contract AccountExtension is ContractMetadata, ERC1271, AccountPermissions, ERC7 } /// @notice See EIP-1271 - function isValidSignature(bytes32 _message, bytes memory _signature) - public - view - virtual - override - returns (bytes4 magicValue) - { + function isValidSignature( + bytes32 _message, + bytes memory _signature + ) public view virtual override returns (bytes4 magicValue) { bytes32 messageHash = getMessageHash(abi.encode(_message)); address signer = messageHash.recover(_signature); @@ -107,11 +104,7 @@ contract AccountExtension is ContractMetadata, ERC1271, AccountPermissions, ERC7 //////////////////////////////////////////////////////////////*/ /// @notice Executes a transaction (called directly from an admin, or by entryPoint) - function execute( - address _target, - uint256 _value, - bytes calldata _calldata - ) external virtual onlyAdminOrEntrypoint { + function execute(address _target, uint256 _value, bytes calldata _calldata) external virtual onlyAdminOrEntrypoint { _registerOnFactory(); _call(_target, _value, _calldata); } @@ -154,11 +147,7 @@ contract AccountExtension is ContractMetadata, ERC1271, AccountPermissions, ERC7 } /// @dev Calls a target contract and reverts if it fails. - function _call( - address _target, - uint256 value, - bytes memory _calldata - ) internal returns (bytes memory result) { + function _call(address _target, uint256 value, bytes memory _calldata) internal returns (bytes memory result) { bool success; (success, result) = _target.call{ value: value }(_calldata); if (!success) { diff --git a/contracts/prebuilts/account/utils/BaseAccount.sol b/contracts/prebuilts/account/utils/BaseAccount.sol index 4ae5c5cc8..14e02ce6a 100644 --- a/contracts/prebuilts/account/utils/BaseAccount.sol +++ b/contracts/prebuilts/account/utils/BaseAccount.sol @@ -70,10 +70,10 @@ abstract contract BaseAccount is IAccount { * If the account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. * Note that the validation code cannot use block.timestamp (or block.number) directly. */ - function _validateSignature(UserOperation calldata userOp, bytes32 userOpHash) - internal - virtual - returns (uint256 validationData); + function _validateSignature( + UserOperation calldata userOp, + bytes32 userOpHash + ) internal virtual returns (uint256 validationData); /** * Validate the nonce of the UserOperation. diff --git a/contracts/prebuilts/account/utils/BaseAccountFactory.sol b/contracts/prebuilts/account/utils/BaseAccountFactory.sol index 5f462b770..151e5789e 100644 --- a/contracts/prebuilts/account/utils/BaseAccountFactory.sol +++ b/contracts/prebuilts/account/utils/BaseAccountFactory.sol @@ -165,9 +165,5 @@ abstract contract BaseAccountFactory is IAccountFactory, Multicall { } /// @dev Called in `createAccount`. Initializes the account contract created in `createAccount`. - function _initializeAccount( - address _account, - address _admin, - bytes calldata _data - ) internal virtual; + function _initializeAccount(address _account, address _admin, bytes calldata _data) internal virtual; } diff --git a/contracts/prebuilts/account/utils/Entrypoint.sol b/contracts/prebuilts/account/utils/Entrypoint.sol index f42e6db7b..260024d3a 100644 --- a/contracts/prebuilts/account/utils/Entrypoint.sol +++ b/contracts/prebuilts/account/utils/Entrypoint.sol @@ -119,10 +119,10 @@ contract EntryPoint is IEntryPoint, StakeManager, NonceManager, ReentrancyGuard * @param opsPerAggregator the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts) * @param beneficiary the address to receive the fees */ - function handleAggregatedOps(UserOpsPerAggregator[] calldata opsPerAggregator, address payable beneficiary) - public - nonReentrant - { + function handleAggregatedOps( + UserOpsPerAggregator[] calldata opsPerAggregator, + address payable beneficiary + ) public nonReentrant { uint256 opasLen = opsPerAggregator.length; uint256 totalOps = 0; for (uint256 i = 0; i < opasLen; i++) { @@ -357,11 +357,7 @@ contract EntryPoint is IEntryPoint, StakeManager, NonceManager, ReentrancyGuard } // create the sender's contract if needed. - function _createSenderIfNeeded( - uint256 opIndex, - UserOpInfo memory opInfo, - bytes calldata initCode - ) internal { + function _createSenderIfNeeded(uint256 opIndex, UserOpInfo memory opInfo, bytes calldata initCode) internal { if (initCode.length != 0) { address sender = opInfo.mUserOp.sender; if (sender.code.length != 0) revert FailedOp(opIndex, "AA10 sender already constructed"); @@ -536,11 +532,9 @@ contract EntryPoint is IEntryPoint, StakeManager, NonceManager, ReentrancyGuard } } - function _getValidationData(uint256 validationData) - internal - view - returns (address aggregator, bool outOfTimeRange) - { + function _getValidationData( + uint256 validationData + ) internal view returns (address aggregator, bool outOfTimeRange) { if (validationData == 0) { return (address(0), false); } diff --git a/contracts/prebuilts/account/utils/Exec.sol b/contracts/prebuilts/account/utils/Exec.sol index 2b161a414..97d0952ba 100644 --- a/contracts/prebuilts/account/utils/Exec.sol +++ b/contracts/prebuilts/account/utils/Exec.sol @@ -7,32 +7,19 @@ pragma solidity ^0.8.11; * Utility functions helpful when making different kinds of contract calls in Solidity. */ library Exec { - function call( - address to, - uint256 value, - bytes memory data, - uint256 txGas - ) internal returns (bool success) { + function call(address to, uint256 value, bytes memory data, uint256 txGas) internal returns (bool success) { assembly { success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0) } } - function staticcall( - address to, - bytes memory data, - uint256 txGas - ) internal view returns (bool success) { + function staticcall(address to, bytes memory data, uint256 txGas) internal view returns (bool success) { assembly { success := staticcall(txGas, to, add(data, 0x20), mload(data), 0, 0) } } - function delegateCall( - address to, - bytes memory data, - uint256 txGas - ) internal returns (bool success) { + function delegateCall(address to, bytes memory data, uint256 txGas) internal returns (bool success) { assembly { success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0) } @@ -60,11 +47,7 @@ library Exec { } } - function callAndRevert( - address to, - bytes memory data, - uint256 maxLen - ) internal { + function callAndRevert(address to, bytes memory data, uint256 maxLen) internal { bool success = call(to, 0, data, gasleft()); if (!success) { revertWithData(getReturnData(maxLen)); diff --git a/contracts/prebuilts/account/utils/Helpers.sol b/contracts/prebuilts/account/utils/Helpers.sol index 68134a063..32ebbfdd5 100644 --- a/contracts/prebuilts/account/utils/Helpers.sol +++ b/contracts/prebuilts/account/utils/Helpers.sol @@ -32,10 +32,10 @@ function _parseValidationData(uint256 validationData) pure returns (ValidationDa } // intersect account and paymaster ranges. -function _intersectTimeRange(uint256 validationData, uint256 paymasterValidationData) - pure - returns (ValidationData memory) -{ +function _intersectTimeRange( + uint256 validationData, + uint256 paymasterValidationData +) pure returns (ValidationData memory) { ValidationData memory accountValidationData = _parseValidationData(validationData); ValidationData memory pmValidationData = _parseValidationData(paymasterValidationData); address aggregator = accountValidationData.aggregator; @@ -66,11 +66,7 @@ function _packValidationData(ValidationData memory data) pure returns (uint256) * @param validUntil last timestamp this UserOperation is valid (or zero for infinite) * @param validAfter first timestamp this UserOperation is valid */ -function _packValidationData( - bool sigFailed, - uint48 validUntil, - uint48 validAfter -) pure returns (uint256) { +function _packValidationData(bool sigFailed, uint48 validUntil, uint48 validAfter) pure returns (uint256) { return (sigFailed ? 1 : 0) | (uint256(validUntil) << 160) | (uint256(validAfter) << (160 + 48)); } diff --git a/contracts/prebuilts/account/utils/TokenCallbackHandler.sol b/contracts/prebuilts/account/utils/TokenCallbackHandler.sol index eb543bac0..1900af613 100644 --- a/contracts/prebuilts/account/utils/TokenCallbackHandler.sol +++ b/contracts/prebuilts/account/utils/TokenCallbackHandler.sol @@ -22,12 +22,7 @@ contract TokenCallbackHandler is IERC777Recipient, IERC721Receiver, IERC1155Rece bytes calldata ) external pure override {} - function onERC721Received( - address, - address, - uint256, - bytes calldata - ) external pure override returns (bytes4) { + function onERC721Received(address, address, uint256, bytes calldata) external pure override returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } diff --git a/contracts/prebuilts/drop/DropERC1155.sol b/contracts/prebuilts/drop/DropERC1155.sol index 448812973..99748d52d 100644 --- a/contracts/prebuilts/drop/DropERC1155.sol +++ b/contracts/prebuilts/drop/DropERC1155.sol @@ -16,7 +16,7 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; @@ -47,7 +47,7 @@ contract DropERC1155 is PermissionsEnumerable, Drop1155, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC1155Upgradeable { using StringsUpgradeable for uint256; @@ -155,13 +155,9 @@ contract DropERC1155 is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC1155Upgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC1155Upgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId; } @@ -269,11 +265,7 @@ contract DropERC1155 is } /// @dev Transfers the NFTs being claimed. - function transferTokensOnClaim( - address _to, - uint256 _tokenId, - uint256 _quantityBeingClaimed - ) internal override { + function transferTokensOnClaim(address _to, uint256 _tokenId, uint256 _quantityBeingClaimed) internal override { _mint(_to, _tokenId, _quantityBeingClaimed, ""); } @@ -322,11 +314,7 @@ contract DropERC1155 is } /// @dev Lets a token owner burn multiple tokens they own at once (i.e. destroy for good) - function burnBatch( - address account, - uint256[] memory ids, - uint256[] memory values - ) public virtual { + function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not owner nor approved." diff --git a/contracts/prebuilts/drop/DropERC20.sol b/contracts/prebuilts/drop/DropERC20.sol index 790de9690..b8ec7f748 100644 --- a/contracts/prebuilts/drop/DropERC20.sol +++ b/contracts/prebuilts/drop/DropERC20.sol @@ -16,7 +16,7 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; // ========== Internal imports ========== @@ -40,7 +40,7 @@ contract DropERC20 is PermissionsEnumerable, Drop, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC20BurnableUpgradeable, ERC20VotesUpgradeable { @@ -218,11 +218,7 @@ contract DropERC20 is } /// @dev Runs on every transfer. - function _beforeTokenTransfer( - address from, - address to, - uint256 amount - ) internal override(ERC20Upgradeable) { + function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20Upgradeable) { super._beforeTokenTransfer(from, to, amount); if (!hasRole(transferRole, address(0)) && from != address(0) && to != address(0)) { diff --git a/contracts/prebuilts/drop/DropERC721.sol b/contracts/prebuilts/drop/DropERC721.sol index 69fe66c18..96a233520 100644 --- a/contracts/prebuilts/drop/DropERC721.sol +++ b/contracts/prebuilts/drop/DropERC721.sol @@ -14,7 +14,7 @@ pragma solidity ^0.8.11; // ========== External imports ========== -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; @@ -49,7 +49,7 @@ contract DropERC721 is PermissionsEnumerable, Drop, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC721AUpgradeable { using StringsUpgradeable for uint256; @@ -137,13 +137,9 @@ contract DropERC721 is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId; } @@ -185,11 +181,10 @@ contract DropERC721 is /// @dev Lets an account with `METADATA_ROLE` reveal the URI for a batch of 'delayed-reveal' NFTs. /// @param _index the ID of a token with the desired batch. /// @param _key the key to decrypt the batch's URI. - function reveal(uint256 _index, bytes calldata _key) - external - onlyRole(metadataRole) - returns (string memory revealedURI) - { + function reveal( + uint256 _index, + bytes calldata _key + ) external onlyRole(metadataRole) returns (string memory revealedURI) { uint256 batchId = getBatchIdAtIndex(_index); revealedURI = getRevealURI(batchId, _key); @@ -281,11 +276,10 @@ contract DropERC721 is } /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) { startTokenId = _currentIndex; _safeMint(_to, _quantityBeingClaimed); } diff --git a/contracts/prebuilts/evolving-nfts/EvolvingNFTLogic.sol b/contracts/prebuilts/evolving-nfts/EvolvingNFTLogic.sol index 6b5c18c05..f7c645d40 100644 --- a/contracts/prebuilts/evolving-nfts/EvolvingNFTLogic.sol +++ b/contracts/prebuilts/evolving-nfts/EvolvingNFTLogic.sol @@ -22,7 +22,7 @@ import "../../eip/queryable/ERC721AQueryableUpgradeable.sol"; // ========== Internal imports ========== import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; -import "../../lib/CurrencyTransferLib.sol"; +import { CurrencyTransferLib } from "../../lib/CurrencyTransferLib.sol"; // ========== Features ========== @@ -65,13 +65,9 @@ contract EvolvingNFTLogic is //////////////////////////////////////////////////////////////*/ /// @dev Returns the URI for a given tokenId. - function tokenURI(uint256 _tokenId) - public - view - virtual - override(ERC721AUpgradeable, IERC721AUpgradeable) - returns (string memory) - { + function tokenURI( + uint256 _tokenId + ) public view virtual override(ERC721AUpgradeable, IERC721AUpgradeable) returns (string memory) { if (!_exists(_tokenId)) { revert("!ID"); } @@ -104,13 +100,9 @@ contract EvolvingNFTLogic is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC721AUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC721AUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId; } @@ -155,11 +147,10 @@ contract EvolvingNFTLogic is } /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId_) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId_) { startTokenId_ = _nextTokenId(); _safeMint(_to, _quantityBeingClaimed); } diff --git a/contracts/prebuilts/interface/airdrop/IAirdropERC1155.sol b/contracts/prebuilts/interface/airdrop/IAirdropERC1155.sol index 965c39904..7350e1029 100644 --- a/contracts/prebuilts/interface/airdrop/IAirdropERC1155.sol +++ b/contracts/prebuilts/interface/airdrop/IAirdropERC1155.sol @@ -41,9 +41,5 @@ interface IAirdropERC1155 { * @param tokenOwner The owner of the tokens to transfer. * @param contents List containing recipient, tokenId to airdrop. */ - function airdropERC1155( - address tokenAddress, - address tokenOwner, - AirdropContent[] calldata contents - ) external; + function airdropERC1155(address tokenAddress, address tokenOwner, AirdropContent[] calldata contents) external; } diff --git a/contracts/prebuilts/interface/airdrop/IAirdropERC721.sol b/contracts/prebuilts/interface/airdrop/IAirdropERC721.sol index c65cc655d..3d94d422c 100644 --- a/contracts/prebuilts/interface/airdrop/IAirdropERC721.sol +++ b/contracts/prebuilts/interface/airdrop/IAirdropERC721.sol @@ -38,9 +38,5 @@ interface IAirdropERC721 { * @param tokenOwner The owner of the tokens to transfer. * @param contents List containing recipient, tokenId to airdrop. */ - function airdropERC721( - address tokenAddress, - address tokenOwner, - AirdropContent[] calldata contents - ) external; + function airdropERC721(address tokenAddress, address tokenOwner, AirdropContent[] calldata contents) external; } diff --git a/contracts/prebuilts/interface/drop/IDropERC1155.sol b/contracts/prebuilts/interface/drop/IDropERC1155.sol index 319d12074..2c3d4181a 100644 --- a/contracts/prebuilts/interface/drop/IDropERC1155.sol +++ b/contracts/prebuilts/interface/drop/IDropERC1155.sol @@ -88,9 +88,5 @@ interface IDropERC1155 is IERC1155Upgradeable, IDropClaimCondition { * `limitMerkleProofClaim` values when setting new * claim conditions. */ - function setClaimConditions( - uint256 tokenId, - ClaimCondition[] calldata phases, - bool resetClaimEligibility - ) external; + function setClaimConditions(uint256 tokenId, ClaimCondition[] calldata phases, bool resetClaimEligibility) external; } diff --git a/contracts/prebuilts/interface/drop/IDropERC721.sol b/contracts/prebuilts/interface/drop/IDropERC721.sol index 47140a670..e115de49c 100644 --- a/contracts/prebuilts/interface/drop/IDropERC721.sol +++ b/contracts/prebuilts/interface/drop/IDropERC721.sol @@ -60,11 +60,7 @@ interface IDropERC721 is IERC721Upgradeable, IDropClaimCondition { * result of encrypting the URI of the NFTs in the revealed * state. */ - function lazyMint( - uint256 amount, - string calldata baseURIForTokens, - bytes calldata encryptedBaseURI - ) external; + function lazyMint(uint256 amount, string calldata baseURIForTokens, bytes calldata encryptedBaseURI) external; /** * @notice Lets an account claim a given quantity of NFTs. diff --git a/contracts/prebuilts/interface/marketplace/IMarketplace.sol b/contracts/prebuilts/interface/marketplace/IMarketplace.sol index b7f345541..d485451d4 100644 --- a/contracts/prebuilts/interface/marketplace/IMarketplace.sol +++ b/contracts/prebuilts/interface/marketplace/IMarketplace.sol @@ -315,12 +315,7 @@ interface IMarketplace is IThirdwebContract, IPlatformFee { * @param _currency The currency of the offer that is to be accepted. * @param _totalPrice The total price of the offer that is to be accepted. */ - function acceptOffer( - uint256 _listingId, - address _offeror, - address _currency, - uint256 _totalPrice - ) external; + function acceptOffer(uint256 _listingId, address _offeror, address _currency, uint256 _totalPrice) external; /** * @notice Lets any account close an auction on behalf of either the (1) auction's creator, or (2) winning bidder. diff --git a/contracts/prebuilts/interface/token/ITokenERC1155.sol b/contracts/prebuilts/interface/token/ITokenERC1155.sol index 322f7d8ec..656878796 100644 --- a/contracts/prebuilts/interface/token/ITokenERC1155.sol +++ b/contracts/prebuilts/interface/token/ITokenERC1155.sol @@ -58,10 +58,10 @@ interface ITokenERC1155 is IERC1155Upgradeable { * * returns (success, signer) Result of verification and the recovered address. */ - function verify(MintRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verify( + MintRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /** * @notice Lets an account with MINTER_ROLE mint an NFT. @@ -72,12 +72,7 @@ interface ITokenERC1155 is IERC1155Upgradeable { * @param amount The number of copies of the NFT to mint. * */ - function mintTo( - address to, - uint256 tokenId, - string calldata uri, - uint256 amount - ) external; + function mintTo(address to, uint256 tokenId, string calldata uri, uint256 amount) external; /** * @notice Mints an NFT according to the provided mint request. diff --git a/contracts/prebuilts/interface/token/ITokenERC20.sol b/contracts/prebuilts/interface/token/ITokenERC20.sol index 13ed053e7..4a97956df 100644 --- a/contracts/prebuilts/interface/token/ITokenERC20.sol +++ b/contracts/prebuilts/interface/token/ITokenERC20.sol @@ -42,10 +42,10 @@ interface ITokenERC20 is IERC20MetadataUpgradeable { * * returns (success, signer) Result of verification and the recovered address. */ - function verify(MintRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verify( + MintRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /** * @dev Creates `amount` new tokens for `to`. diff --git a/contracts/prebuilts/interface/token/ITokenERC721.sol b/contracts/prebuilts/interface/token/ITokenERC721.sol index 22e2f0b63..caf0016d9 100644 --- a/contracts/prebuilts/interface/token/ITokenERC721.sol +++ b/contracts/prebuilts/interface/token/ITokenERC721.sol @@ -52,10 +52,10 @@ interface ITokenERC721 is IERC721Upgradeable { * * returns (success, signer) Result of verification and the recovered address. */ - function verify(MintRequest calldata req, bytes calldata signature) - external - view - returns (bool success, address signer); + function verify( + MintRequest calldata req, + bytes calldata signature + ) external view returns (bool success, address signer); /** * @notice Lets an account with MINTER_ROLE mint an NFT. diff --git a/contracts/prebuilts/loyalty/LoyaltyCard.sol b/contracts/prebuilts/loyalty/LoyaltyCard.sol index 0ff5fc2b8..a796855e0 100644 --- a/contracts/prebuilts/loyalty/LoyaltyCard.sol +++ b/contracts/prebuilts/loyalty/LoyaltyCard.sol @@ -126,13 +126,9 @@ contract LoyaltyCard is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981).interfaceId == interfaceId; } @@ -141,12 +137,10 @@ contract LoyaltyCard is //////////////////////////////////////////////////////////////*/ /// @dev Mints an NFT according to the provided mint request. Always mints 1 NFT. - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - nonReentrant - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable nonReentrant returns (address signer) { require(_req.quantity == 1, "LoyaltyCard: only 1 NFT can be minted at a time."); signer = _processRequest(_req, _signature); diff --git a/contracts/prebuilts/marketplace-legacy/Marketplace.sol b/contracts/prebuilts/marketplace-legacy/Marketplace.sol index a8a8d50c3..ba136e58a 100644 --- a/contracts/prebuilts/marketplace-legacy/Marketplace.sol +++ b/contracts/prebuilts/marketplace-legacy/Marketplace.sol @@ -26,7 +26,6 @@ import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; // ========== Internal imports ========== @@ -34,6 +33,7 @@ import { IMarketplace } from "../interface/marketplace/IMarketplace.sol"; import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "../../lib/CurrencyTransferLib.sol"; import "../../lib/FeeType.sol"; @@ -42,7 +42,7 @@ contract Marketplace is IMarketplace, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, AccessControlEnumerableUpgradeable, IERC721ReceiverUpgradeable, IERC1155ReceiverUpgradeable @@ -190,22 +190,13 @@ contract Marketplace is return this.onERC1155BatchReceived.selector; } - function onERC721Received( - address, - address, - uint256, - bytes calldata - ) external pure override returns (bytes4) { + function onERC721Received(address, address, uint256, bytes calldata) external pure override returns (bytes4) { return this.onERC721Received.selector; } - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(AccessControlEnumerableUpgradeable, IERC165Upgradeable) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(AccessControlEnumerableUpgradeable, IERC165Upgradeable) returns (bool) { return interfaceId == type(IERC1155ReceiverUpgradeable).interfaceId || interfaceId == type(IERC721ReceiverUpgradeable).interfaceId || @@ -604,12 +595,10 @@ contract Marketplace is //////////////////////////////////////////////////////////////*/ /// @dev Lets an account close an auction for either the (1) winning bidder, or (2) auction creator. - function closeAuction(uint256 _listingId, address _closeFor) - external - override - nonReentrant - onlyExistingListing(_listingId) - { + function closeAuction( + uint256 _listingId, + address _closeFor + ) external override nonReentrant onlyExistingListing(_listingId) { Listing memory targetListing = listings[_listingId]; require(targetListing.listingType == ListingType.Auction, "not an auction."); @@ -695,12 +684,7 @@ contract Marketplace is //////////////////////////////////////////////////////////////*/ /// @dev Transfers tokens listed for sale in a direct or auction listing. - function transferListingTokens( - address _from, - address _to, - uint256 _quantity, - Listing memory _listing - ) internal { + function transferListingTokens(address _from, address _to, uint256 _quantity, Listing memory _listing) internal { if (_listing.tokenType == TokenType.ERC1155) { IERC1155Upgradeable(_listing.assetContract).safeTransferFrom(_from, _to, _listing.tokenId, _quantity, ""); } else if (_listing.tokenType == TokenType.ERC721) { @@ -838,11 +822,10 @@ contract Marketplace is //////////////////////////////////////////////////////////////*/ /// @dev Enforces quantity == 1 if tokenType is TokenType.ERC721. - function getSafeQuantity(TokenType _tokenType, uint256 _quantityToCheck) - internal - pure - returns (uint256 safeQuantity) - { + function getSafeQuantity( + TokenType _tokenType, + uint256 _quantityToCheck + ) internal pure returns (uint256 safeQuantity) { if (_quantityToCheck == 0) { safeQuantity = 0; } else { @@ -871,10 +854,10 @@ contract Marketplace is //////////////////////////////////////////////////////////////*/ /// @dev Lets a contract admin update platform fee recipient and bps. - function setPlatformFeeInfo(address _platformFeeRecipient, uint256 _platformFeeBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _platformFeeBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_platformFeeBps <= MAX_BPS, "bps <= 10000."); platformFeeBps = uint64(_platformFeeBps); diff --git a/contracts/prebuilts/marketplace/IMarketplace.sol b/contracts/prebuilts/marketplace/IMarketplace.sol index 07e3e5ad4..0b9e05bcf 100644 --- a/contracts/prebuilts/marketplace/IMarketplace.sol +++ b/contracts/prebuilts/marketplace/IMarketplace.sol @@ -144,11 +144,7 @@ interface IDirectListings { * @param _buyer The address of the buyer to approve to buy from the listing. * @param _toApprove Whether to approve the buyer to buy from the listing. */ - function approveBuyerForListing( - uint256 _listingId, - address _buyer, - bool _toApprove - ) external; + function approveBuyerForListing(uint256 _listingId, address _buyer, bool _toApprove) external; /** * @notice Approve a currency as a form of payment for the listing. @@ -393,14 +389,9 @@ interface IEnglishAuctions { function getAllValidAuctions(uint256 _startId, uint256 _endId) external view returns (Auction[] memory auctions); /// @notice Returns the winning bid of an active auction. - function getWinningBid(uint256 _auctionId) - external - view - returns ( - address bidder, - address currency, - uint256 bidAmount - ); + function getWinningBid( + uint256 _auctionId + ) external view returns (address bidder, address currency, uint256 bidAmount); /// @notice Returns whether an auction is active. function isAuctionExpired(uint256 _auctionId) external view returns (bool); diff --git a/contracts/prebuilts/marketplace/direct-listings/DirectListingsLogic.sol b/contracts/prebuilts/marketplace/direct-listings/DirectListingsLogic.sol index 2a24982ec..32ec02abf 100644 --- a/contracts/prebuilts/marketplace/direct-listings/DirectListingsLogic.sol +++ b/contracts/prebuilts/marketplace/direct-listings/DirectListingsLogic.sol @@ -86,12 +86,9 @@ contract DirectListingsLogic is IDirectListings, ReentrancyGuard, ERC2771Context //////////////////////////////////////////////////////////////*/ /// @notice List NFTs (ERC721 or ERC1155) for sale at a fixed price. - function createListing(ListingParameters calldata _params) - external - onlyListerRole - onlyAssetRole(_params.assetContract) - returns (uint256 listingId) - { + function createListing( + ListingParameters calldata _params + ) external onlyListerRole onlyAssetRole(_params.assetContract) returns (uint256 listingId) { listingId = _getNextListingId(); address listingCreator = _msgSender(); TokenType tokenType = _getTokenType(_params.assetContract); @@ -131,12 +128,10 @@ contract DirectListingsLogic is IDirectListings, ReentrancyGuard, ERC2771Context } /// @notice Update parameters of a listing of NFTs. - function updateListing(uint256 _listingId, ListingParameters memory _params) - external - onlyExistingListing(_listingId) - onlyAssetRole(_params.assetContract) - onlyListingCreator(_listingId) - { + function updateListing( + uint256 _listingId, + ListingParameters memory _params + ) external onlyExistingListing(_listingId) onlyAssetRole(_params.assetContract) onlyListingCreator(_listingId) { address listingCreator = _msgSender(); Listing memory listing = _directListingsStorage().listings[_listingId]; TokenType tokenType = _getTokenType(_params.assetContract); @@ -355,11 +350,10 @@ contract DirectListingsLogic is IDirectListings, ReentrancyGuard, ERC2771Context * A valid listing is where the listing creator still owns and has approved Marketplace * to transfer the listed NFTs. */ - function getAllValidListings(uint256 _startId, uint256 _endId) - external - view - returns (Listing[] memory _validListings) - { + function getAllValidListings( + uint256 _startId, + uint256 _endId + ) external view returns (Listing[] memory _validListings) { require(_startId <= _endId && _endId < _directListingsStorage().totalListings, "invalid range"); Listing[] memory _listings = new Listing[](_endId - _startId + 1); @@ -476,11 +470,7 @@ contract DirectListingsLogic is IDirectListings, ReentrancyGuard, ERC2771Context } /// @dev Validates that `_tokenOwner` owns and has approved Markeplace to transfer the appropriate amount of currency - function _validateERC20BalAndAllowance( - address _tokenOwner, - address _currency, - uint256 _amount - ) internal view { + function _validateERC20BalAndAllowance(address _tokenOwner, address _currency, uint256 _amount) internal view { require( IERC20(_currency).balanceOf(_tokenOwner) >= _amount && IERC20(_currency).allowance(_tokenOwner, address(this)) >= _amount, @@ -489,12 +479,7 @@ contract DirectListingsLogic is IDirectListings, ReentrancyGuard, ERC2771Context } /// @dev Transfers tokens listed for sale in a direct or auction listing. - function _transferListingTokens( - address _from, - address _to, - uint256 _quantity, - Listing memory _listing - ) internal { + function _transferListingTokens(address _from, address _to, uint256 _quantity, Listing memory _listing) internal { if (_listing.tokenType == TokenType.ERC1155) { IERC1155(_listing.assetContract).safeTransferFrom(_from, _to, _listing.tokenId, _quantity, ""); } else if (_listing.tokenType == TokenType.ERC721) { diff --git a/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsLogic.sol b/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsLogic.sol index f7164fdd2..66574a050 100644 --- a/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsLogic.sol +++ b/contracts/prebuilts/marketplace/english-auctions/EnglishAuctionsLogic.sol @@ -86,12 +86,9 @@ contract EnglishAuctionsLogic is IEnglishAuctions, ReentrancyGuard, ERC2771Conte //////////////////////////////////////////////////////////////*/ /// @notice Auction ERC721 or ERC1155 NFTs. - function createAuction(AuctionParameters calldata _params) - external - onlyListerRole - onlyAssetRole(_params.assetContract) - returns (uint256 auctionId) - { + function createAuction( + AuctionParameters calldata _params + ) external onlyListerRole onlyAssetRole(_params.assetContract) returns (uint256 auctionId) { auctionId = _getNextAuctionId(); address auctionCreator = _msgSender(); TokenType tokenType = _getTokenType(_params.assetContract); @@ -122,12 +119,10 @@ contract EnglishAuctionsLogic is IEnglishAuctions, ReentrancyGuard, ERC2771Conte emit NewAuction(auctionCreator, auctionId, _params.assetContract, auction); } - function bidInAuction(uint256 _auctionId, uint256 _bidAmount) - external - payable - nonReentrant - onlyExistingAuction(_auctionId) - { + function bidInAuction( + uint256 _auctionId, + uint256 _bidAmount + ) external payable nonReentrant onlyExistingAuction(_auctionId) { Auction memory _targetAuction = _englishAuctionsStorage().auctions[_auctionId]; require( @@ -203,12 +198,10 @@ contract EnglishAuctionsLogic is IEnglishAuctions, ReentrancyGuard, ERC2771Conte View functions //////////////////////////////////////////////////////////////*/ - function isNewWinningBid(uint256 _auctionId, uint256 _bidAmount) - external - view - onlyExistingAuction(_auctionId) - returns (bool) - { + function isNewWinningBid( + uint256 _auctionId, + uint256 _bidAmount + ) external view onlyExistingAuction(_auctionId) returns (bool) { Auction memory _targetAuction = _englishAuctionsStorage().auctions[_auctionId]; Bid memory _currentWinningBid = _englishAuctionsStorage().winningBid[_auctionId]; @@ -239,11 +232,10 @@ contract EnglishAuctionsLogic is IEnglishAuctions, ReentrancyGuard, ERC2771Conte } } - function getAllValidAuctions(uint256 _startId, uint256 _endId) - external - view - returns (Auction[] memory _validAuctions) - { + function getAllValidAuctions( + uint256 _startId, + uint256 _endId + ) external view returns (Auction[] memory _validAuctions) { require(_startId <= _endId && _endId < _englishAuctionsStorage().totalAuctions, "invalid range"); Auction[] memory _auctions = new Auction[](_endId - _startId + 1); @@ -277,15 +269,9 @@ contract EnglishAuctionsLogic is IEnglishAuctions, ReentrancyGuard, ERC2771Conte } } - function getWinningBid(uint256 _auctionId) - external - view - returns ( - address _bidder, - address _currency, - uint256 _bidAmount - ) - { + function getWinningBid( + uint256 _auctionId + ) external view returns (address _bidder, address _currency, uint256 _bidAmount) { Auction memory _targetAuction = _englishAuctionsStorage().auctions[_auctionId]; Bid memory _currentWinningBid = _englishAuctionsStorage().winningBid[_auctionId]; @@ -458,11 +444,7 @@ contract EnglishAuctionsLogic is IEnglishAuctions, ReentrancyGuard, ERC2771Conte } /// @dev Transfers tokens for auction. - function _transferAuctionTokens( - address _from, - address _to, - Auction memory _auction - ) internal { + function _transferAuctionTokens(address _from, address _to, Auction memory _auction) internal { if (_auction.tokenType == TokenType.ERC1155) { IERC1155(_auction.assetContract).safeTransferFrom(_from, _to, _auction.tokenId, _auction.quantity, ""); } else if (_auction.tokenType == TokenType.ERC721) { diff --git a/contracts/prebuilts/marketplace/entrypoint/MarketplaceV3.sol b/contracts/prebuilts/marketplace/entrypoint/MarketplaceV3.sol index b7ba591fd..cfa4939a4 100644 --- a/contracts/prebuilts/marketplace/entrypoint/MarketplaceV3.sol +++ b/contracts/prebuilts/marketplace/entrypoint/MarketplaceV3.sol @@ -69,10 +69,9 @@ contract MarketplaceV3 is address nativeTokenWrapper; } - constructor(MarketplaceConstructorParams memory _marketplaceV3Params) - BaseRouter(_marketplaceV3Params.extensions) - RoyaltyPaymentsLogic(_marketplaceV3Params.royaltyEngineAddress) - { + constructor( + MarketplaceConstructorParams memory _marketplaceV3Params + ) BaseRouter(_marketplaceV3Params.extensions) RoyaltyPaymentsLogic(_marketplaceV3Params.royaltyEngineAddress) { nativeTokenWrapper = _marketplaceV3Params.nativeTokenWrapper; _disableInitializers(); } @@ -127,13 +126,9 @@ contract MarketplaceV3 is ERC 165 / 721 / 1155 logic //////////////////////////////////////////////////////////////*/ - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC165, IERC165, ERC1155Receiver) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC165, IERC165, ERC1155Receiver) returns (bool) { return interfaceId == type(IERC1155Receiver).interfaceId || interfaceId == type(IERC721Receiver).interfaceId || diff --git a/contracts/prebuilts/marketplace/offers/OffersLogic.sol b/contracts/prebuilts/marketplace/offers/OffersLogic.sol index 05590921c..8f8724d89 100644 --- a/contracts/prebuilts/marketplace/offers/OffersLogic.sol +++ b/contracts/prebuilts/marketplace/offers/OffersLogic.sol @@ -66,11 +66,9 @@ contract OffersLogic is IOffers, ReentrancyGuard, ERC2771ContextConsumer { External functions //////////////////////////////////////////////////////////////*/ - function makeOffer(OfferParams memory _params) - external - onlyAssetRole(_params.assetContract) - returns (uint256 _offerId) - { + function makeOffer( + OfferParams memory _params + ) external onlyAssetRole(_params.assetContract) returns (uint256 _offerId) { _offerId = _getNextOfferId(); address _offeror = _msgSender(); TokenType _tokenType = _getTokenType(_params.assetContract); @@ -267,12 +265,7 @@ contract OffersLogic is IOffers, ReentrancyGuard, ERC2771ContextConsumer { } /// @dev Transfers tokens. - function _transferOfferTokens( - address _from, - address _to, - uint256 _quantity, - Offer memory _offer - ) internal { + function _transferOfferTokens(address _from, address _to, uint256 _quantity, Offer memory _offer) internal { if (_offer.tokenType == TokenType.ERC1155) { IERC1155(_offer.assetContract).safeTransferFrom(_from, _to, _offer.tokenId, _quantity, ""); } else if (_offer.tokenType == TokenType.ERC721) { diff --git a/contracts/prebuilts/multiwrap/Multiwrap.sol b/contracts/prebuilts/multiwrap/Multiwrap.sol index 626f4e2ed..0a6d59d6f 100644 --- a/contracts/prebuilts/multiwrap/Multiwrap.sol +++ b/contracts/prebuilts/multiwrap/Multiwrap.sol @@ -14,14 +14,13 @@ pragma solidity ^0.8.11; // ========== External imports ========== import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol"; - -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; // ========== Internal imports ========== import "../interface/IMultiwrap.sol"; +import "../../extension/Multicall.sol"; import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // ========== Features ========== @@ -41,7 +40,7 @@ contract Multiwrap is TokenStore, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC721EnumerableUpgradeable, IMultiwrap { @@ -142,13 +141,9 @@ contract Multiwrap is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC1155Receiver, ERC721EnumerableUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC1155Receiver, ERC721EnumerableUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || interfaceId == type(IERC721Upgradeable).interfaceId || @@ -236,9 +231,10 @@ contract Multiwrap is function _beforeTokenTransfer( address from, address to, - uint256 tokenId + uint256 tokenId, + uint256 batchSize ) internal virtual override { - super._beforeTokenTransfer(from, to, tokenId); + super._beforeTokenTransfer(from, to, tokenId, batchSize); // if transfer is restricted on the contract, we still want to allow burning and minting if (!hasRole(TRANSFER_ROLE, address(0)) && from != address(0) && to != address(0)) { diff --git a/contracts/prebuilts/open-edition/OpenEditionERC721.sol b/contracts/prebuilts/open-edition/OpenEditionERC721.sol index f1788c744..3b7287ab8 100644 --- a/contracts/prebuilts/open-edition/OpenEditionERC721.sol +++ b/contracts/prebuilts/open-edition/OpenEditionERC721.sol @@ -106,13 +106,9 @@ contract OpenEditionERC721 is //////////////////////////////////////////////////////////////*/ /// @dev Returns the URI for a given tokenId. - function tokenURI(uint256 _tokenId) - public - view - virtual - override(ERC721AUpgradeable, IERC721AUpgradeable) - returns (string memory) - { + function tokenURI( + uint256 _tokenId + ) public view virtual override(ERC721AUpgradeable, IERC721AUpgradeable) returns (string memory) { if (!_exists(_tokenId)) { revert("!ID"); } @@ -121,13 +117,9 @@ contract OpenEditionERC721 is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC165, IERC721AUpgradeable) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC165, IERC721AUpgradeable) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId; } @@ -172,11 +164,10 @@ contract OpenEditionERC721 is } /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId_) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId_) { startTokenId_ = _nextTokenId(); _safeMint(_to, _quantityBeingClaimed); } diff --git a/contracts/prebuilts/pack/Pack.sol b/contracts/prebuilts/pack/Pack.sol index 9abef00fd..956459cf2 100644 --- a/contracts/prebuilts/pack/Pack.sol +++ b/contracts/prebuilts/pack/Pack.sol @@ -17,7 +17,6 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; import "@openzeppelin/contracts/interfaces/IERC721Receiver.sol"; @@ -26,6 +25,7 @@ import { IERC1155Receiver } from "@openzeppelin/contracts/interfaces/IERC1155Rec // ========== Internal imports ========== import "../interface/IPack.sol"; +import "../../extension/Multicall.sol"; import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // ========== Features ========== @@ -45,7 +45,7 @@ contract Pack is TokenStore, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC1155Upgradeable, IPack { @@ -183,13 +183,9 @@ contract Pack is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC1155Receiver, ERC1155Upgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC1155Receiver, ERC1155Upgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId || @@ -386,11 +382,9 @@ contract Pack is //////////////////////////////////////////////////////////////*/ /// @dev Returns the underlying contents of a pack. - function getPackContents(uint256 _packId) - public - view - returns (Token[] memory contents, uint256[] memory perUnitAmounts) - { + function getPackContents( + uint256 _packId + ) public view returns (Token[] memory contents, uint256[] memory perUnitAmounts) { PackInfo memory pack = packInfo[_packId]; uint256 total = getTokenCountOfBundle(_packId); contents = new Token[](total); diff --git a/contracts/prebuilts/pack/PackVRFDirect.sol b/contracts/prebuilts/pack/PackVRFDirect.sol index 68178f764..d0c17fbde 100644 --- a/contracts/prebuilts/pack/PackVRFDirect.sol +++ b/contracts/prebuilts/pack/PackVRFDirect.sol @@ -17,7 +17,6 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; import "@openzeppelin/contracts/interfaces/IERC721Receiver.sol"; @@ -28,6 +27,7 @@ import "../../external-deps/chainlink/VRFV2WrapperConsumerBase.sol"; // ========== Internal imports ========== import "../interface/IPackVRFDirect.sol"; +import "../../extension/Multicall.sol"; import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // ========== Features ========== @@ -52,7 +52,7 @@ contract PackVRFDirect is TokenStore, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC1155Upgradeable, IPackVRFDirect { @@ -186,13 +186,9 @@ contract PackVRFDirect is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC1155Receiver, ERC1155Upgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC1155Receiver, ERC1155Upgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId || @@ -433,11 +429,9 @@ contract PackVRFDirect is //////////////////////////////////////////////////////////////*/ /// @dev Returns the underlying contents of a pack. - function getPackContents(uint256 _packId) - public - view - returns (Token[] memory contents, uint256[] memory perUnitAmounts) - { + function getPackContents( + uint256 _packId + ) public view returns (Token[] memory contents, uint256[] memory perUnitAmounts) { PackInfo memory pack = packInfo[_packId]; uint256 total = getTokenCountOfBundle(_packId); contents = new Token[](total); diff --git a/contracts/prebuilts/signature-drop/SignatureDrop.sol b/contracts/prebuilts/signature-drop/SignatureDrop.sol index 98b464fe3..b601aed2d 100644 --- a/contracts/prebuilts/signature-drop/SignatureDrop.sol +++ b/contracts/prebuilts/signature-drop/SignatureDrop.sol @@ -14,7 +14,7 @@ pragma solidity ^0.8.11; // ========== External imports ========== -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; @@ -51,7 +51,7 @@ contract SignatureDrop is DropSinglePhase, SignatureMintERC721Upgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC721AUpgradeable { using StringsUpgradeable for uint256; @@ -126,13 +126,9 @@ contract SignatureDrop is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId; } @@ -168,11 +164,10 @@ contract SignatureDrop is } /// @dev Lets an account with `MINTER_ROLE` reveal the URI for a batch of 'delayed-reveal' NFTs. - function reveal(uint256 _index, bytes calldata _key) - external - onlyRole(minterRole) - returns (string memory revealedURI) - { + function reveal( + uint256 _index, + bytes calldata _key + ) external onlyRole(minterRole) returns (string memory revealedURI) { uint256 batchId = getBatchIdAtIndex(_index); revealedURI = getRevealURI(batchId, _key); @@ -187,11 +182,10 @@ contract SignatureDrop is //////////////////////////////////////////////////////////////*/ /// @dev Claim lazy minted tokens via signature. - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable returns (address signer) { uint256 tokenIdToMint = _currentIndex; if (tokenIdToMint + _req.quantity > nextTokenIdToLazyMint) { revert("!Tokens"); @@ -262,11 +256,10 @@ contract SignatureDrop is } /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) { startTokenId = _currentIndex; _safeMint(_to, _quantityBeingClaimed); } diff --git a/contracts/prebuilts/split/Split.sol b/contracts/prebuilts/split/Split.sol index a4d18cfb9..96d539fc6 100644 --- a/contracts/prebuilts/split/Split.sol +++ b/contracts/prebuilts/split/Split.sol @@ -23,13 +23,13 @@ import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol"; // Utils -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "../../lib/FeeType.sol"; contract Split is IThirdwebContract, Initializable, - MulticallUpgradeable, + Multicall, ERC2771ContextUpgradeable, AccessControlEnumerableUpgradeable, PaymentSplitterUpgradeable diff --git a/contracts/prebuilts/staking/EditionStake.sol b/contracts/prebuilts/staking/EditionStake.sol index dbd026db9..35fc483f9 100644 --- a/contracts/prebuilts/staking/EditionStake.sol +++ b/contracts/prebuilts/staking/EditionStake.sol @@ -21,7 +21,7 @@ import "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgrad import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // Utils -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "../../lib/CurrencyTransferLib.sol"; // ========== Features ========== @@ -36,7 +36,7 @@ contract EditionStake is ContractMetadata, PermissionsEnumerable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, Staking1155Upgradeable, ERC165Upgradeable, IERC1155ReceiverUpgradeable, @@ -141,13 +141,7 @@ contract EditionStake is ERC 165 / 721 logic //////////////////////////////////////////////////////////////*/ - function onERC1155Received( - address, - address, - uint256, - uint256, - bytes calldata - ) external view returns (bytes4) { + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external view returns (bytes4) { require(isStaking == 2, "Direct transfer"); return this.onERC1155Received.selector; } @@ -160,12 +154,9 @@ contract EditionStake is bytes calldata data ) external returns (bytes4) {} - function supportsInterface(bytes4 interfaceId) - public - view - override(ERC165Upgradeable, IERC165Upgradeable) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view override(ERC165Upgradeable, IERC165Upgradeable) returns (bool) { return interfaceId == type(IERC1155ReceiverUpgradeable).interfaceId || super.supportsInterface(interfaceId); } diff --git a/contracts/prebuilts/staking/NFTStake.sol b/contracts/prebuilts/staking/NFTStake.sol index c0aa9ed63..df6c6b3a1 100644 --- a/contracts/prebuilts/staking/NFTStake.sol +++ b/contracts/prebuilts/staking/NFTStake.sol @@ -21,7 +21,7 @@ import "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradea import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // Utils -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "../../lib/CurrencyTransferLib.sol"; // ========== Features ========== @@ -36,7 +36,7 @@ contract NFTStake is ContractMetadata, PermissionsEnumerable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, Staking721Upgradeable, ERC165Upgradeable, IERC721ReceiverUpgradeable, @@ -141,12 +141,7 @@ contract NFTStake is ERC 165 / 721 logic //////////////////////////////////////////////////////////////*/ - function onERC721Received( - address, - address, - uint256, - bytes calldata - ) external view override returns (bytes4) { + function onERC721Received(address, address, uint256, bytes calldata) external view override returns (bytes4) { require(isStaking == 2, "Direct transfer"); return this.onERC721Received.selector; } diff --git a/contracts/prebuilts/staking/TokenStake.sol b/contracts/prebuilts/staking/TokenStake.sol index 5856820df..5d6c5f888 100644 --- a/contracts/prebuilts/staking/TokenStake.sol +++ b/contracts/prebuilts/staking/TokenStake.sol @@ -19,7 +19,7 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // Utils -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import { CurrencyTransferLib } from "../../lib/CurrencyTransferLib.sol"; import "../../eip/interface/IERC20Metadata.sol"; @@ -35,7 +35,7 @@ contract TokenStake is ContractMetadata, PermissionsEnumerable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, Staking20Upgradeable, ITokenStake { diff --git a/contracts/prebuilts/tiered-drop/TieredDrop.sol b/contracts/prebuilts/tiered-drop/TieredDrop.sol index 6d92f36f9..9d5571ca5 100644 --- a/contracts/prebuilts/tiered-drop/TieredDrop.sol +++ b/contracts/prebuilts/tiered-drop/TieredDrop.sol @@ -14,7 +14,7 @@ pragma solidity ^0.8.11; // ========== External imports ========== -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; @@ -51,7 +51,7 @@ contract TieredDrop is PermissionsEnumerable, SignatureActionUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC721AUpgradeable { using StringsUpgradeable for uint256; @@ -183,13 +183,9 @@ contract TieredDrop is } /// @dev See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981Upgradeable).interfaceId == interfaceId; } @@ -225,11 +221,10 @@ contract TieredDrop is } /// @dev Lets an account with `MINTER_ROLE` reveal the URI for a batch of 'delayed-reveal' NFTs. - function reveal(uint256 _index, bytes calldata _key) - external - onlyRole(minterRole) - returns (string memory revealedURI) - { + function reveal( + uint256 _index, + bytes calldata _key + ) external onlyRole(minterRole) returns (string memory revealedURI) { uint256 batchId = getBatchIdAtIndex(_index); revealedURI = getRevealURI(batchId, _key); @@ -246,11 +241,10 @@ contract TieredDrop is //////////////////////////////////////////////////////////////*/ /// @dev Claim lazy minted tokens via signature. - function claimWithSignature(GenericRequest calldata _req, bytes calldata _signature) - external - payable - returns (address signer) - { + function claimWithSignature( + GenericRequest calldata _req, + bytes calldata _signature + ) external payable returns (address signer) { ( string[] memory tiersInPriority, address to, @@ -292,11 +286,7 @@ contract TieredDrop is Internal functions //////////////////////////////////////////////////////////////*/ /// @dev Collects and distributes the primary sale value of NFTs being claimed. - function collectPriceOnClaim( - address _primarySaleRecipient, - address _currency, - uint256 _totalPrice - ) internal { + function collectPriceOnClaim(address _primarySaleRecipient, address _currency, uint256 _totalPrice) internal { if (_totalPrice == 0) { require(msg.value == 0, "!Value"); return; @@ -316,11 +306,7 @@ contract TieredDrop is } /// @dev Transfers the NFTs being claimed. - function transferTokensOnClaim( - address _to, - uint256 _totalQuantityBeingClaimed, - string[] memory _tiers - ) internal { + function transferTokensOnClaim(address _to, uint256 _totalQuantityBeingClaimed, string[] memory _tiers) internal { uint256 startTokenIdToMint = _currentIndex; uint256 startIdToMap = startTokenIdToMint; @@ -355,11 +341,7 @@ contract TieredDrop is } /// @dev Maps lazy minted metadata to NFT tokenIds. - function _mapTokensToTier( - string memory _tier, - uint256 _startIdToMap, - uint256 _quantity - ) private { + function _mapTokensToTier(string memory _tier, uint256 _startIdToMap, uint256 _quantity) private { uint256 nextIdFromTier = nextMetadataIdToMapFromTier[_tier]; uint256 startTokenId = _startIdToMap; @@ -408,11 +390,10 @@ contract TieredDrop is } /// @dev Returns how much of the total-quantity-to-distribute can come from the given tier. - function _getQuantityFulfilledByTier(string memory _tier, uint256 _quantity) - private - view - returns (uint256 fulfilled) - { + function _getQuantityFulfilledByTier( + string memory _tier, + uint256 _quantity + ) private view returns (uint256 fulfilled) { uint256 total = totalRemainingInTier[_tier]; if (total >= _quantity) { diff --git a/contracts/prebuilts/token/TokenERC1155.sol b/contracts/prebuilts/token/TokenERC1155.sol index 8a8939295..a3db15910 100644 --- a/contracts/prebuilts/token/TokenERC1155.sol +++ b/contracts/prebuilts/token/TokenERC1155.sol @@ -36,7 +36,7 @@ import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable. // Utils import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "../../lib/CurrencyTransferLib.sol"; import "../../lib/FeeType.sol"; import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; @@ -54,7 +54,7 @@ contract TokenERC1155 is EIP712Upgradeable, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, AccessControlEnumerableUpgradeable, ERC1155Upgradeable, ITokenERC1155, @@ -228,12 +228,10 @@ contract TokenERC1155 is /// ===== External functions ===== /// @dev See EIP-2981 - function royaltyInfo(uint256 tokenId, uint256 salePrice) - external - view - virtual - returns (address receiver, uint256 royaltyAmount) - { + function royaltyInfo( + uint256 tokenId, + uint256 salePrice + ) external view virtual returns (address receiver, uint256 royaltyAmount) { (address recipient, uint256 bps) = getRoyaltyInfoForToken(tokenId); receiver = recipient; royaltyAmount = (salePrice * bps) / MAX_BPS; @@ -276,10 +274,10 @@ contract TokenERC1155 is } /// @dev Lets a module admin update the royalty bps and recipient. - function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setDefaultRoyaltyInfo( + address _royaltyRecipient, + uint256 _royaltyBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_royaltyBps <= MAX_BPS, "exceed royalty bps"); royaltyRecipient = _royaltyRecipient; @@ -302,10 +300,10 @@ contract TokenERC1155 is } /// @dev Lets a module admin update the fees on primary sales. - function setPlatformFeeInfo(address _platformFeeRecipient, uint256 _platformFeeBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _platformFeeBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_platformFeeBps <= MAX_BPS, "exceeds MAX_BPS"); platformFeeBps = uint64(_platformFeeBps); @@ -315,10 +313,10 @@ contract TokenERC1155 is } /// @dev Lets a module admin set a flat fee on primary sales. - function setFlatPlatformFeeInfo(address _platformFeeRecipient, uint256 _flatFee) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setFlatPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _flatFee + ) external onlyRole(DEFAULT_ADMIN_ROLE) { flatPlatformFee = _flatFee; platformFeeRecipient = _platformFeeRecipient; @@ -381,12 +379,7 @@ contract TokenERC1155 is /// ===== Internal functions ===== /// @dev Mints an NFT to `to` - function _mintTo( - address _to, - string calldata _uri, - uint256 _tokenId, - uint256 _amount - ) internal { + function _mintTo(address _to, string calldata _uri, uint256 _tokenId, uint256 _amount) internal { if (bytes(_tokenURI[_tokenId]).length == 0) { _setTokenURI(_tokenId, _uri); } @@ -472,11 +465,7 @@ contract TokenERC1155 is /// ===== Low-level overrides ===== /// @dev Lets a token owner burn the tokens they own (i.e. destroy for good) - function burn( - address account, - uint256 id, - uint256 value - ) public virtual { + function burn(address account, uint256 id, uint256 value) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not owner nor approved." @@ -486,11 +475,7 @@ contract TokenERC1155 is } /// @dev Lets a token owner burn multiple tokens they own at once (i.e. destroy for good) - function burnBatch( - address account, - uint256[] memory ids, - uint256[] memory values - ) public virtual { + function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not owner nor approved." @@ -530,7 +515,9 @@ contract TokenERC1155 is } } - function supportsInterface(bytes4 interfaceId) + function supportsInterface( + bytes4 interfaceId + ) public view virtual diff --git a/contracts/prebuilts/token/TokenERC20.sol b/contracts/prebuilts/token/TokenERC20.sol index 69ac93c33..9fe640ce4 100644 --- a/contracts/prebuilts/token/TokenERC20.sol +++ b/contracts/prebuilts/token/TokenERC20.sol @@ -35,7 +35,7 @@ import "@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgra import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // Utils -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "../../lib/CurrencyTransferLib.sol"; import "../../lib/FeeType.sol"; @@ -46,7 +46,7 @@ contract TokenERC20 is IPlatformFee, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, ERC20BurnableUpgradeable, ERC20VotesUpgradeable, ITokenERC20, @@ -133,11 +133,7 @@ contract TokenERC20 is } /// @dev Runs on every transfer. - function _beforeTokenTransfer( - address from, - address to, - uint256 amount - ) internal override { + function _beforeTokenTransfer(address from, address to, uint256 amount) internal override { super._beforeTokenTransfer(from, to, amount); if (!hasRole(TRANSFER_ROLE, address(0)) && from != address(0) && to != address(0)) { @@ -192,10 +188,10 @@ contract TokenERC20 is } /// @dev Lets a module admin update the fees on primary sales. - function setPlatformFeeInfo(address _platformFeeRecipient, uint256 _platformFeeBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _platformFeeBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_platformFeeBps <= MAX_BPS, "exceeds MAX_BPS"); platformFeeBps = uint64(_platformFeeBps); diff --git a/contracts/prebuilts/token/TokenERC721.sol b/contracts/prebuilts/token/TokenERC721.sol index 22c00caf5..4cfd93a73 100644 --- a/contracts/prebuilts/token/TokenERC721.sol +++ b/contracts/prebuilts/token/TokenERC721.sol @@ -40,7 +40,7 @@ import "../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; // Utils import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../extension/Multicall.sol"; import "../../lib/CurrencyTransferLib.sol"; import "../../lib/FeeType.sol"; @@ -57,7 +57,7 @@ contract TokenERC721 is ReentrancyGuardUpgradeable, EIP712Upgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, AccessControlEnumerableUpgradeable, ERC721EnumerableUpgradeable, ITokenERC721, @@ -195,24 +195,20 @@ contract TokenERC721 is /// ===== External functions ===== /// @dev See EIP-2981 - function royaltyInfo(uint256 tokenId, uint256 salePrice) - external - view - virtual - returns (address receiver, uint256 royaltyAmount) - { + function royaltyInfo( + uint256 tokenId, + uint256 salePrice + ) external view virtual returns (address receiver, uint256 royaltyAmount) { (address recipient, uint256 bps) = getRoyaltyInfoForToken(tokenId); receiver = recipient; royaltyAmount = (salePrice * bps) / MAX_BPS; } /// @dev Mints an NFT according to the provided mint request. - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - nonReentrant - returns (uint256 tokenIdMinted) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable nonReentrant returns (uint256 tokenIdMinted) { address signer = verifyRequest(_req, _signature); address receiver = _req.to; @@ -239,10 +235,10 @@ contract TokenERC721 is } /// @dev Lets a module admin update the royalty bps and recipient. - function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setDefaultRoyaltyInfo( + address _royaltyRecipient, + uint256 _royaltyBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_royaltyBps <= MAX_BPS, "exceed royalty bps"); royaltyRecipient = _royaltyRecipient; @@ -265,10 +261,10 @@ contract TokenERC721 is } /// @dev Lets a module admin update the fees on primary sales. - function setPlatformFeeInfo(address _platformFeeRecipient, uint256 _platformFeeBps) - external - onlyRole(DEFAULT_ADMIN_ROLE) - { + function setPlatformFeeInfo( + address _platformFeeRecipient, + uint256 _platformFeeBps + ) external onlyRole(DEFAULT_ADMIN_ROLE) { require(_platformFeeBps <= MAX_BPS, "exceeds MAX_BPS"); platformFeeBps = uint64(_platformFeeBps); @@ -404,9 +400,10 @@ contract TokenERC721 is function _beforeTokenTransfer( address from, address to, - uint256 tokenId + uint256 tokenId, + uint256 batchSize ) internal virtual override(ERC721EnumerableUpgradeable) { - super._beforeTokenTransfer(from, to, tokenId); + super._beforeTokenTransfer(from, to, tokenId, batchSize); // if transfer is restricted on the contract, we still want to allow burning and minting if (!hasRole(TRANSFER_ROLE, address(0)) && from != address(0) && to != address(0)) { @@ -424,7 +421,9 @@ contract TokenERC721 is return hasRole(METADATA_ROLE, _msgSender()); } - function supportsInterface(bytes4 interfaceId) + function supportsInterface( + bytes4 interfaceId + ) public view virtual diff --git a/contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol b/contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol index f80d7d58c..a07588a7a 100644 --- a/contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol +++ b/contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol @@ -16,7 +16,7 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../../extension/Multicall.sol"; // ========== Internal imports ========== @@ -33,7 +33,7 @@ contract AirdropERC1155 is PermissionsEnumerable, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, IAirdropERC1155 { /*/////////////////////////////////////////////////////////////// @@ -47,7 +47,9 @@ contract AirdropERC1155 is Constructor + initializer logic //////////////////////////////////////////////////////////////*/ - constructor() initializer {} + constructor() { + _disableInitializers(); + } /// @dev Initializes the contract, like a constructor. function initialize( diff --git a/contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol b/contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol index 35fb2f929..a7bd4966f 100644 --- a/contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol +++ b/contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol @@ -16,33 +16,28 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import { Multicall } from "../../../extension/Multicall.sol"; // ========== Internal imports ========== import "../../interface/airdrop/IAirdropERC1155Claimable.sol"; // ========== Features ========== -import "../../../extension/Ownable.sol"; import "../../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; import "../../../lib/MerkleProof.sol"; contract AirdropERC1155Claimable is Initializable, - Ownable, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, IAirdropERC1155Claimable { /*/////////////////////////////////////////////////////////////// State variables //////////////////////////////////////////////////////////////*/ - bytes32 private constant MODULE_TYPE = bytes32("AirdropERC1155Claimable"); - uint256 private constant VERSION = 1; - /// @dev address of token being airdropped. address public airdropTokenAddress; @@ -62,8 +57,8 @@ contract AirdropERC1155Claimable is /// @dev Mapping from tokenId and claimer address to total number of tokens claimed. mapping(uint256 => mapping(address => uint256)) public supplyClaimedByWallet; - /// @dev general claim limit for a tokenId if claimer not in allowlist. - mapping(uint256 => uint256) public maxWalletClaimCount; + /// @dev claim limit for open/public claiming without allowlist. + mapping(uint256 => uint256) public openClaimLimitPerWallet; /// @dev number tokens available to claim for a tokenId. mapping(uint256 => uint256) public availableAmount; @@ -75,21 +70,21 @@ contract AirdropERC1155Claimable is Constructor + initializer logic //////////////////////////////////////////////////////////////*/ - constructor() initializer {} + constructor() { + _disableInitializers(); + } /// @dev Initializes the contract, like a constructor. function initialize( - address _defaultAdmin, address[] memory _trustedForwarders, address _tokenOwner, address _airdropTokenAddress, uint256[] memory _tokenIds, uint256[] memory _availableAmounts, uint256 _expirationTimestamp, - uint256[] memory _maxWalletClaimCount, + uint256[] memory _openClaimLimitPerWallet, bytes32[] memory _merkleRoot ) external initializer { - _setupOwner(_defaultAdmin); __ReentrancyGuard_init(); __ERC2771Context_init(_trustedForwarders); @@ -99,7 +94,7 @@ contract AirdropERC1155Claimable is expirationTimestamp = _expirationTimestamp; require( - _maxWalletClaimCount.length == _tokenIds.length && + _openClaimLimitPerWallet.length == _tokenIds.length && _merkleRoot.length == _tokenIds.length && _availableAmounts.length == _tokenIds.length, "length mismatch." @@ -107,25 +102,11 @@ contract AirdropERC1155Claimable is for (uint256 i = 0; i < _tokenIds.length; i++) { merkleRoot[_tokenIds[i]] = _merkleRoot[i]; - maxWalletClaimCount[_tokenIds[i]] = _maxWalletClaimCount[i]; + openClaimLimitPerWallet[_tokenIds[i]] = _openClaimLimitPerWallet[i]; availableAmount[_tokenIds[i]] = _availableAmounts[i]; } } - /*/////////////////////////////////////////////////////////////// - Generic contract logic - //////////////////////////////////////////////////////////////*/ - - /// @dev Returns the type of the contract. - function contractType() external pure returns (bytes32) { - return MODULE_TYPE; - } - - /// @dev Returns the version of the contract. - function contractVersion() external pure returns (uint8) { - return uint8(VERSION); - } - /*/////////////////////////////////////////////////////////////// Claim logic //////////////////////////////////////////////////////////////*/ @@ -158,11 +139,7 @@ contract AirdropERC1155Claimable is } /// @dev Transfers the tokens being claimed. - function _transferClaimedTokens( - address _to, - uint256 _quantityBeingClaimed, - uint256 _tokenId - ) internal { + function _transferClaimedTokens(address _to, uint256 _quantityBeingClaimed, uint256 _tokenId) internal { // if transfer claimed tokens is called when `to != msg.sender`, it'd use msg.sender's limits. // behavior would be similar to `msg.sender` mint for itself, then transfer to `_to`. supplyClaimedByWallet[_tokenId][_msgSender()] += _quantityBeingClaimed; @@ -181,6 +158,10 @@ contract AirdropERC1155Claimable is ) public view { bool isOverride; + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ bytes32 mroot = merkleRoot[_tokenId]; if (mroot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( @@ -198,7 +179,7 @@ contract AirdropERC1155Claimable is uint256 expTimestamp = expirationTimestamp; require(expTimestamp == 0 || block.timestamp < expTimestamp, "airdrop expired."); - uint256 claimLimitForWallet = isOverride ? _proofMaxQuantityForWallet : maxWalletClaimCount[_tokenId]; + uint256 claimLimitForWallet = isOverride ? _proofMaxQuantityForWallet : openClaimLimitPerWallet[_tokenId]; require(_quantity + supplyClaimedAlready <= claimLimitForWallet, "invalid quantity."); } @@ -206,11 +187,6 @@ contract AirdropERC1155Claimable is Miscellaneous //////////////////////////////////////////////////////////////*/ - /// @dev Returns whether owner can be set in the given execution context. - function _canSetOwner() internal view virtual override returns (bool) { - return _msgSender() == owner(); - } - function _msgSender() internal view virtual override returns (address sender) { return ERC2771ContextUpgradeable._msgSender(); } diff --git a/contracts/prebuilts/unaudited/airdrop/AirdropERC20.sol b/contracts/prebuilts/unaudited/airdrop/AirdropERC20.sol index e574d7180..cf412467d 100644 --- a/contracts/prebuilts/unaudited/airdrop/AirdropERC20.sol +++ b/contracts/prebuilts/unaudited/airdrop/AirdropERC20.sol @@ -15,7 +15,7 @@ pragma solidity ^0.8.11; // ========== External imports ========== import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../../extension/Multicall.sol"; // ========== Internal imports ========== @@ -34,7 +34,7 @@ contract AirdropERC20 is PermissionsEnumerable, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, IAirdropERC20 { /*/////////////////////////////////////////////////////////////// @@ -48,7 +48,9 @@ contract AirdropERC20 is Constructor + initializer logic //////////////////////////////////////////////////////////////*/ - constructor() initializer {} + constructor() { + _disableInitializers(); + } /// @dev Initializes the contract, like a constructor. function initialize( diff --git a/contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol b/contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol index 3bb676f6a..a247ece6e 100644 --- a/contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol +++ b/contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol @@ -16,47 +16,42 @@ pragma solidity ^0.8.11; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../../extension/Multicall.sol"; // ========== Internal imports ========== import "../../interface/airdrop/IAirdropERC20Claimable.sol"; // ========== Features ========== -import "../../../extension/Ownable.sol"; import "../../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; import "../../../lib/MerkleProof.sol"; contract AirdropERC20Claimable is Initializable, - Ownable, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, IAirdropERC20Claimable { /*/////////////////////////////////////////////////////////////// State variables //////////////////////////////////////////////////////////////*/ - bytes32 private constant MODULE_TYPE = bytes32("AirdropERC20Claimable"); - uint256 private constant VERSION = 1; - /// @dev address of token being airdropped. address public airdropTokenAddress; /// @dev address of owner of tokens being airdropped. address public tokenOwner; - /// @dev number tokens available to claim in tokenIds[]. + /// @dev number tokens available to claim. uint256 public availableAmount; /// @dev airdrop expiration timestamp. uint256 public expirationTimestamp; - /// @dev general claim limit if claimer not in allowlist. - uint256 public maxWalletClaimCount; + /// @dev claim limit for open/public claiming without allowlist. + uint256 public openClaimLimitPerWallet; /// @dev merkle root of the allowlist of addresses eligible to claim. bytes32 public merkleRoot; @@ -72,20 +67,20 @@ contract AirdropERC20Claimable is Constructor + initializer logic //////////////////////////////////////////////////////////////*/ - constructor() initializer {} + constructor() { + _disableInitializers(); + } /// @dev Initializes the contract, like a constructor. function initialize( - address _defaultAdmin, address[] memory _trustedForwarders, address _tokenOwner, address _airdropTokenAddress, uint256 _airdropAmount, uint256 _expirationTimestamp, - uint256 _maxWalletClaimCount, + uint256 _openClaimLimitPerWallet, bytes32 _merkleRoot ) external initializer { - _setupOwner(_defaultAdmin); __ReentrancyGuard_init(); __ERC2771Context_init(_trustedForwarders); @@ -93,24 +88,10 @@ contract AirdropERC20Claimable is airdropTokenAddress = _airdropTokenAddress; availableAmount = _airdropAmount; expirationTimestamp = _expirationTimestamp; - maxWalletClaimCount = _maxWalletClaimCount; + openClaimLimitPerWallet = _openClaimLimitPerWallet; merkleRoot = _merkleRoot; } - /*/////////////////////////////////////////////////////////////// - Generic contract logic - //////////////////////////////////////////////////////////////*/ - - /// @dev Returns the type of the contract. - function contractType() external pure returns (bytes32) { - return MODULE_TYPE; - } - - /// @dev Returns the version of the contract. - function contractVersion() external pure returns (uint8) { - return uint8(VERSION); - } - /*/////////////////////////////////////////////////////////////// Claim logic //////////////////////////////////////////////////////////////*/ @@ -148,6 +129,11 @@ contract AirdropERC20Claimable is uint256 _proofMaxQuantityForWallet ) public view { bool isOverride; + + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ if (merkleRoot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( _proofs, @@ -164,7 +150,7 @@ contract AirdropERC20Claimable is uint256 expTimestamp = expirationTimestamp; require(expTimestamp == 0 || block.timestamp < expTimestamp, "airdrop expired."); - uint256 claimLimitForWallet = isOverride ? _proofMaxQuantityForWallet : maxWalletClaimCount; + uint256 claimLimitForWallet = isOverride ? _proofMaxQuantityForWallet : openClaimLimitPerWallet; require(_quantity + supplyClaimedAlready <= claimLimitForWallet, "invalid quantity."); } @@ -182,11 +168,6 @@ contract AirdropERC20Claimable is Miscellaneous //////////////////////////////////////////////////////////////*/ - /// @dev Returns whether owner can be set in the given execution context. - function _canSetOwner() internal view virtual override returns (bool) { - return _msgSender() == owner(); - } - function _msgSender() internal view virtual override returns (address sender) { return ERC2771ContextUpgradeable._msgSender(); } diff --git a/contracts/prebuilts/unaudited/airdrop/AirdropERC721.sol b/contracts/prebuilts/unaudited/airdrop/AirdropERC721.sol index 0fc4f56f3..c36c2bb3d 100644 --- a/contracts/prebuilts/unaudited/airdrop/AirdropERC721.sol +++ b/contracts/prebuilts/unaudited/airdrop/AirdropERC721.sol @@ -16,7 +16,7 @@ pragma solidity ^0.8.11; import "../../../eip/interface/IERC721.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../../extension/Multicall.sol"; // ========== Internal imports ========== @@ -33,7 +33,7 @@ contract AirdropERC721 is PermissionsEnumerable, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, IAirdropERC721 { /*/////////////////////////////////////////////////////////////// @@ -47,7 +47,9 @@ contract AirdropERC721 is Constructor + initializer logic //////////////////////////////////////////////////////////////*/ - constructor() initializer {} + constructor() { + _disableInitializers(); + } /// @dev Initializes the contract, like a constructor. function initialize( diff --git a/contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol b/contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol index 22c0744d6..a76f08225 100644 --- a/contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol +++ b/contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol @@ -16,33 +16,28 @@ pragma solidity ^0.8.11; import "../../../eip/interface/IERC721.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol"; +import "../../../extension/Multicall.sol"; // ========== Internal imports ========== import "../../interface/airdrop/IAirdropERC721Claimable.sol"; // ========== Features ========== -import "../../../extension/Ownable.sol"; import "../../../external-deps/openzeppelin/metatx/ERC2771ContextUpgradeable.sol"; import "../../../lib/MerkleProof.sol"; contract AirdropERC721Claimable is Initializable, - Ownable, ReentrancyGuardUpgradeable, ERC2771ContextUpgradeable, - MulticallUpgradeable, + Multicall, IAirdropERC721Claimable { /*/////////////////////////////////////////////////////////////// State variables //////////////////////////////////////////////////////////////*/ - bytes32 private constant MODULE_TYPE = bytes32("AirdropERC721Claimable"); - uint256 private constant VERSION = 1; - /// @dev address of token being airdropped. address public airdropTokenAddress; @@ -61,8 +56,8 @@ contract AirdropERC721Claimable is /// @dev airdrop expiration timestamp. uint256 public expirationTimestamp; - /// @dev general claim limit if claimer not in allowlist. - uint256 public maxWalletClaimCount; + /// @dev claim limit for open/public claiming without allowlist. + uint256 public openClaimLimitPerWallet; /// @dev merkle root of the allowlist of addresses eligible to claim. bytes32 public merkleRoot; @@ -78,20 +73,20 @@ contract AirdropERC721Claimable is Constructor + initializer logic //////////////////////////////////////////////////////////////*/ - constructor() initializer {} + constructor() { + _disableInitializers(); + } /// @dev Initializes the contract, like a constructor. function initialize( - address _defaultAdmin, address[] memory _trustedForwarders, address _tokenOwner, address _airdropTokenAddress, uint256[] memory _tokenIds, uint256 _expirationTimestamp, - uint256 _maxWalletClaimCount, + uint256 _openClaimLimitPerWallet, bytes32 _merkleRoot ) external initializer { - _setupOwner(_defaultAdmin); __ReentrancyGuard_init(); __ERC2771Context_init(_trustedForwarders); @@ -99,26 +94,12 @@ contract AirdropERC721Claimable is airdropTokenAddress = _airdropTokenAddress; tokenIds = _tokenIds; expirationTimestamp = _expirationTimestamp; - maxWalletClaimCount = _maxWalletClaimCount; + openClaimLimitPerWallet = _openClaimLimitPerWallet; merkleRoot = _merkleRoot; availableAmount = _tokenIds.length; } - /*/////////////////////////////////////////////////////////////// - Generic contract logic - //////////////////////////////////////////////////////////////*/ - - /// @dev Returns the type of the contract. - function contractType() external pure returns (bytes32) { - return MODULE_TYPE; - } - - /// @dev Returns the version of the contract. - function contractVersion() external pure returns (uint8) { - return uint8(VERSION); - } - /*/////////////////////////////////////////////////////////////// Claim logic //////////////////////////////////////////////////////////////*/ @@ -156,6 +137,11 @@ contract AirdropERC721Claimable is uint256 _proofMaxQuantityForWallet ) public view { bool isOverride; + + /* + * Here `isOverride` implies that if the merkle proof verification fails, + * the claimer would claim through open claim limit instead of allowlisted limit. + */ if (merkleRoot != bytes32(0)) { (isOverride, ) = MerkleProof.verify( _proofs, @@ -172,7 +158,7 @@ contract AirdropERC721Claimable is uint256 expTimestamp = expirationTimestamp; require(expTimestamp == 0 || block.timestamp < expTimestamp, "airdrop expired."); - uint256 claimLimitForWallet = isOverride ? _proofMaxQuantityForWallet : maxWalletClaimCount; + uint256 claimLimitForWallet = isOverride ? _proofMaxQuantityForWallet : openClaimLimitPerWallet; require(_quantity + supplyClaimedAlready <= claimLimitForWallet, "invalid quantity."); } @@ -199,11 +185,6 @@ contract AirdropERC721Claimable is Miscellaneous //////////////////////////////////////////////////////////////*/ - /// @dev Returns whether owner can be set in the given execution context. - function _canSetOwner() internal view virtual override returns (bool) { - return _msgSender() == owner(); - } - function _msgSender() internal view virtual override returns (address sender) { return ERC2771ContextUpgradeable._msgSender(); } diff --git a/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Logic.sol b/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Logic.sol index f252e3e1a..77a14a5b9 100644 --- a/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Logic.sol +++ b/contracts/prebuilts/unaudited/burn-to-claim-drop/extension/BurnToClaimDrop721Logic.sol @@ -14,7 +14,7 @@ pragma solidity ^0.8.11; import { BurnToClaimDrop721Storage } from "./BurnToClaimDrop721Storage.sol"; -import "../../../../lib/TWStrings.sol"; +import "../../../../lib/Strings.sol"; import "../../../../lib/CurrencyTransferLib.sol"; import { IERC2981 } from "../../../../eip/interface/IERC2981.sol"; @@ -47,7 +47,7 @@ contract BurnToClaimDrop721Logic is ERC2771ContextUpgradeable, ERC721AUpgradeable { - using TWStrings for uint256; + using Strings for uint256; /*/////////////////////////////////////////////////////////////// Constants @@ -90,13 +90,9 @@ contract BurnToClaimDrop721Logic is } /// @notice See ERC 165 - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override(ERC721AUpgradeable, IERC165) - returns (bool) - { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(ERC721AUpgradeable, IERC165) returns (bool) { return super.supportsInterface(interfaceId) || type(IERC2981).interfaceId == interfaceId; } @@ -242,11 +238,10 @@ contract BurnToClaimDrop721Logic is } /// @dev Transfers the NFTs being claimed. - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - { + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) { ERC721AStorage.Data storage data = ERC721AStorage.erc721AStorage(); startTokenId = data._currentIndex; _safeMint(_to, _quantityBeingClaimed); diff --git a/contracts/prebuilts/unaudited/loyalty/LoyaltyPoints.sol b/contracts/prebuilts/unaudited/loyalty/LoyaltyPoints.sol index 0bf0508e4..81e32da1a 100644 --- a/contracts/prebuilts/unaudited/loyalty/LoyaltyPoints.sol +++ b/contracts/prebuilts/unaudited/loyalty/LoyaltyPoints.sol @@ -116,12 +116,10 @@ contract LoyaltyPoints is //////////////////////////////////////////////////////////////*/ /// @notice Mints tokens to a recipient using a signature from an authorized party. - function mintWithSignature(MintRequest calldata _req, bytes calldata _signature) - external - payable - nonReentrant - returns (address signer) - { + function mintWithSignature( + MintRequest calldata _req, + bytes calldata _signature + ) external payable nonReentrant returns (address signer) { signer = _processRequest(_req, _signature); address receiver = _req.to; @@ -162,11 +160,7 @@ contract LoyaltyPoints is } /// @dev Collects and distributes the primary sale value of tokens being minted. - function _collectPriceOnClaim( - address _primarySaleRecipient, - address _currency, - uint256 _price - ) internal { + function _collectPriceOnClaim(address _primarySaleRecipient, address _currency, uint256 _price) internal { if (_price == 0) { require(msg.value == 0, "!Value"); return; @@ -201,11 +195,7 @@ contract LoyaltyPoints is } /// @dev Runs on every transfer. - function _beforeTokenTransfer( - address from, - address to, - uint256 amount - ) internal override { + function _beforeTokenTransfer(address from, address to, uint256 amount) internal override { super._beforeTokenTransfer(from, to, amount); if (!hasRole(TRANSFER_ROLE, address(0)) && from != address(0) && to != address(0)) { diff --git a/echidna.config.yml b/echidna.config.yml deleted file mode 100644 index 0bdc173bd..000000000 --- a/echidna.config.yml +++ /dev/null @@ -1,15 +0,0 @@ -#corpusDir: 'corpus' -#initialize: contracts/crytic/init.json -#testMode: benchmark -#testMode: optimization -#testMode: assertion -psender: "0x40000" -deployer: "0x40000" -#sender: ["0x40000", "0x50000", "0x50001"] -sender: ["0x40000"] -testLimit: 5000 -shrinkLimit: 500 - -cryticArgs: ["--solc-remaps", "@openzeppelin=node_modules/@openzeppelin @chainlink=node_modules/@chainlink", "--solc-args", "optimize optimize-runs=800 metadata-hash=none"] -#cryticArgs: ["--compile-force-framework", "hardhat"] -#codeSize: 0xfffffffffff diff --git a/foundry.toml b/foundry.toml index d24113933..a86fc9b13 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,5 +1,5 @@ [profile.default] -solc-version = "0.8.12" +solc-version = "0.8.23" #auto_detect_solc = false cache = true evm_version = 'london' diff --git a/lib/chainlink b/lib/chainlink index 9d5ec20aa..5d44bd4e8 160000 --- a/lib/chainlink +++ b/lib/chainlink @@ -1 +1 @@ -Subproject commit 9d5ec20aa7c03c5f08722fa88f621075d300dcc1 +Subproject commit 5d44bd4e8fa2bdc80228a0df891960d72246b645 diff --git a/lib/ds-test b/lib/ds-test index 6da7dd8f7..e282159d5 160000 --- a/lib/ds-test +++ b/lib/ds-test @@ -1 +1 @@ -Subproject commit 6da7dd8f7395f83e1fb6fa88a64ba9a030f85d4f +Subproject commit e282159d5170298eb2455a6c05280ab5a73a4ef0 diff --git a/lib/forge-std b/lib/forge-std index c0c6a4206..2f1126975 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit c0c6a4206531a3f785538240412ea2467ef58ebf +Subproject commit 2f112697506eab12d433a65fdc31a639548fe365 diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index ecd2ca2cd..fd81a96f0 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit ecd2ca2cd7cac116f7a37d0e474bbb3d7d5e1c4d +Subproject commit fd81a96f01cc42ef1c9a5399364968d0e07e9e90 diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable index 0a2cb9a44..3d4c0d574 160000 --- a/lib/openzeppelin-contracts-upgradeable +++ b/lib/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 0a2cb9a445c365870ed7a8ab461b12acf3e27d63 +Subproject commit 3d4c0d5741b131c231e558d7a6213392ab3672a5 diff --git a/manticore/weth.py b/manticore/weth.py deleted file mode 100644 index 65407a900..000000000 --- a/manticore/weth.py +++ /dev/null @@ -1,62 +0,0 @@ -from manticore.ethereum import ManticoreEVM, ABI -from manticore.core.smtlib import Operators, Z3Solver -from manticore.utils import config -from manticore.core.plugin import Plugin - -m = ManticoreEVM() - -# Disable the gas tracking -consts_evm = config.get_group("evm") -consts_evm.oog = "ignore" - -# Increase the solver timeout -config.get_group("smt").defaultunsat = False -config.get_group("smt").timeout = 3600 - -ETHER = 10 ** 18 - -deployer = m.create_account(balance=100 * ETHER, name="deployer") -user = m.create_account(balance=100 * ETHER, name="user") -attacker = m.create_account(balance=100 * ETHER, name="attacker") -print(f'[+] Created user wallet. deployer: {hex(deployer.address)}, user: {hex(user.address)}, attacker: {hex(attacker.address)}') - -contract = m.solidity_create_contract('src/test/mocks/WETH9.sol', contract_name='WETH9', owner=deployer, compile_args={ - "solc_remaps": "@openzeppelin=node_modules/@openzeppelin @chainlink=node_modules/@chainlink", - "solc_args": "optimize optimize-runs=800 metadata-hash=none" -}) -print(f'[+] Deployed contract. address: {hex(contract.address)}') - -print(f'[+] Declaring symbolic variables.') -x = m.make_symbolic_value() -v = m.make_symbolic_value() - -print(f'[+] Calling contract functions sequences.') - -# contrainsts -m.constrain(x > 0) - -# outline the transactions -m.transaction(caller=attacker, address=contract, value=v, data=m.make_symbolic_buffer(4+32*4)) -contract.withdraw(x, caller=attacker) - -print(f"[+] There are {m.count_all_states()} states. ({m.count_ready_states()} ready, {m.count_terminated_states()} terminated, {m.count_busy_states()} alive).") -m.take_snapshot() - -print(f'[+] Generating symbolic conditional transactions traces.') -num_state_found = 0 -for state in m.ready_states: - # withdrawing more than deposited - condition = x > v - if m.generate_testcase(state, only_if=condition, name="constraint"): - num_state_found += 1 -print(f"[+] {num_state_found} constraints test cases generated.") - -m.goto_snapshot() -m.take_snapshot() -print(f'[+] Finalizing transactions.') -m.finalize(only_alive_states=True) - -m.goto_snapshot() -m.take_snapshot() -print(f"[+] Global coverage: {contract.address:x} - {m.global_coverage(contract)}%") -print(f'[+] Results in workspace: {m.workspace}') diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..47354e928 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5827 @@ +{ + "name": "@thirdweb-dev/contracts", + "version": "2.3.0-6", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@thirdweb-dev/contracts", + "version": "2.3.0-6", + "license": "Apache-2.0", + "devDependencies": { + "@chainlink/contracts": "^0.8.0", + "@openzeppelin/contracts": "^4.9.3", + "@openzeppelin/contracts-upgradeable": "^4.9.3", + "@thirdweb-dev/chains": "^0.1.54", + "@thirdweb-dev/dynamic-contracts": "^1.2.4", + "@thirdweb-dev/sdk": "^4.0.16", + "@typechain/ethers-v5": "^10.2.1", + "@types/fs-extra": "^9.0.13", + "@types/mocha": "^9.1.1", + "@types/node": "^17.0.45", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "dotenv": "^16.3.1", + "erc721a": "3.3.0", + "erc721a-upgradeable": "^3.3.0", + "eslint": "^8.54.0", + "eslint-config-prettier": "^8.10.0", + "ethers": "^5.7.2", + "fs-extra": "^10.1.0", + "keccak256": "^1.0.6", + "mocha": "^9.2.2", + "prettier": "^2.8.8", + "prettier-plugin-solidity": "^1.2.0", + "solhint": "^3.6.2", + "solhint-plugin-prettier": "^0.0.5", + "ts-node": "^10.9.1", + "tslib": "^2.6.2", + "tsup": "^5.12.9", + "typechain": "^8.3.2", + "typescript": "^4.9.5" + }, + "peerDependencies": { + "ethers": "^5.0.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/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/@babel/code-frame/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/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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/@chainlink/contracts": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.8.0.tgz", + "integrity": "sha512-nUv1Uxw5Mn92wgLs2bgPYmo8hpdQ3s9jB/lcbdU0LmNOVu0hbfmouVnqwRLa28Ll50q6GczUA+eO0ikNIKLZsA==", + "dev": true, + "dependencies": { + "@eth-optimism/contracts": "^0.5.21", + "@openzeppelin/contracts": "~4.3.3", + "@openzeppelin/contracts-upgradeable-4.7.3": "npm:@openzeppelin/contracts-upgradeable@v4.7.3", + "@openzeppelin/contracts-v0.7": "npm:@openzeppelin/contracts@v3.4.2" + } + }, + "node_modules/@chainlink/contracts/node_modules/@openzeppelin/contracts": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", + "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==", + "dev": true + }, + "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/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.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/@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eth-optimism/contracts": { + "version": "0.5.40", + "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz", + "integrity": "sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==", + "dev": true, + "dependencies": { + "@eth-optimism/core-utils": "0.12.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0" + }, + "peerDependencies": { + "ethers": "^5" + } + }, + "node_modules/@eth-optimism/core-utils": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz", + "integrity": "sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/address": "^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/keccak256": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/providers": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bufio": "^1.0.7", + "chai": "^4.3.4" + } + }, + "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==", + "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/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==", + "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/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==", + "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/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==", + "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/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==", + "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" + } + }, + "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==", + "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", + "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==", + "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/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==", + "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" + } + }, + "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==", + "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/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/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==", + "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", + "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==", + "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" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "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/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==", + "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/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/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==", + "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/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/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==", + "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", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.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==", + "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/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==", + "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/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==", + "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/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/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.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": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "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/@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==", + "dev": true + }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", + "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==", + "dev": true + }, + "node_modules/@openzeppelin/contracts-upgradeable": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz", + "integrity": "sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A==", + "dev": true + }, + "node_modules/@openzeppelin/contracts-upgradeable-4.7.3": { + "name": "@openzeppelin/contracts-upgradeable", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz", + "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", + "dev": true + }, + "node_modules/@openzeppelin/contracts-v0.7": { + "name": "@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/@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@thirdweb-dev/chains": { + "version": "0.1.58", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/chains/-/chains-0.1.58.tgz", + "integrity": "sha512-prSShAWoLODuZQcDBwNDqcXLzfevV2BOw54cDaHetSP+Sw/BP6SaPKIxojRQGsXARjn0JMWniG/NCtppUUHALQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@thirdweb-dev/contracts": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/contracts/-/contracts-3.10.3.tgz", + "integrity": "sha512-wSVNaEoosn0AgUtnxlvv7rgK+3EUMzJm2ZasofPgJgqGS3gYH5nDBmK29VMquA2BLc38OAPyYMWc/iQCiCikMg==", + "dev": true, + "dependencies": { + "@chainlink/contracts": "^0.6.1", + "@openzeppelin/contracts": "4.7.3", + "@openzeppelin/contracts-upgradeable": "4.7.3", + "@thirdweb-dev/dynamic-contracts": "^1.1.2", + "erc721a-upgradeable": "^3.3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@thirdweb-dev/contracts-js": { + "version": "1.3.16", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/contracts-js/-/contracts-js-1.3.16.tgz", + "integrity": "sha512-EpLcD5mdm8b+tvSO7gD9cxSAqjLRr7ygktMp4Pe7Wvobl5ffq8O95futxdVsYc5pyciPZYr8apHUJFYMDlaTqA==", + "dev": true, + "dependencies": { + "@thirdweb-dev/contracts": "3.10.3" + }, + "peerDependencies": { + "ethers": "^5" + } + }, + "node_modules/@thirdweb-dev/contracts/node_modules/@chainlink/contracts": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.6.1.tgz", + "integrity": "sha512-EuwijGexttw0UjfrW+HygwhQIrGAbqpf1ue28R55HhWMHBzphEH0PhWm8DQmFfj5OZNy8Io66N4L0nStkZ3QKQ==", + "dev": true, + "dependencies": { + "@eth-optimism/contracts": "^0.5.21", + "@openzeppelin/contracts": "~4.3.3", + "@openzeppelin/contracts-upgradeable": "^4.7.3", + "@openzeppelin/contracts-v0.7": "npm:@openzeppelin/contracts@v3.4.2" + } + }, + "node_modules/@thirdweb-dev/contracts/node_modules/@chainlink/contracts/node_modules/@openzeppelin/contracts": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", + "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==", + "dev": true + }, + "node_modules/@thirdweb-dev/contracts/node_modules/@openzeppelin/contracts": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", + "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==", + "dev": true + }, + "node_modules/@thirdweb-dev/contracts/node_modules/@openzeppelin/contracts-upgradeable": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz", + "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", + "dev": true + }, + "node_modules/@thirdweb-dev/crypto": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/crypto/-/crypto-0.2.0.tgz", + "integrity": "sha512-hQwSCL/imqSCcnUXlGqJi6dfs4UOcJ91Eq/t1cPXyAb6nwvyaePZPVFqGDglZMQvkS/NWZhifXZINRiCfazn2w==", + "dev": true, + "dependencies": { + "@noble/hashes": "^1.3.2", + "js-sha3": "^0.9.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@thirdweb-dev/crypto/node_modules/js-sha3": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.9.2.tgz", + "integrity": "sha512-8kgvwd03wNGQG1GRvl3yy1Yt40sICAcIMsDU2ZLgoL0Z6z9rkRmf9Vd+bi/gYSzgAqMUGl/jiDKu0J8AWFd+BQ==", + "dev": true + }, + "node_modules/@thirdweb-dev/dynamic-contracts": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/dynamic-contracts/-/dynamic-contracts-1.2.4.tgz", + "integrity": "sha512-cQtUznRXBDifzME3zmppVrfBM2Aw8C/okCLzsgcLU/Qr68TjLJTKTDGt2uGo/q5qAvRVJjQRD/bNvV1QTqjqSg==", + "dev": true + }, + "node_modules/@thirdweb-dev/generated-abis": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/generated-abis/-/generated-abis-0.0.1.tgz", + "integrity": "sha512-vO9/3lSLO8smyyH1QVeYravSTzFwV1nf1C/Im1NBDPdH8//YvcbhtETGGiNfHWpyCvSi0vRYwvf+/7FKdwpDGQ==", + "dev": true + }, + "node_modules/@thirdweb-dev/merkletree": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/merkletree/-/merkletree-0.2.0.tgz", + "integrity": "sha512-4KoH2EOCWKiaHfhDO5Tnf1HjeCXKVfLt31y0kcSG5C0gCldnhm7i1fGUB8e0hW3trfyPQAuSgyP67Ep3UwzClg==", + "dev": true, + "dependencies": { + "@thirdweb-dev/crypto": "0.2.0", + "buffer": "^6.0.3", + "buffer-reverse": "^1.0.1", + "treeify": "^1.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@thirdweb-dev/sdk": { + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/sdk/-/sdk-4.0.16.tgz", + "integrity": "sha512-WTG3sJTtEUpbY1SUd62GU//5npkgVQNJHOUqDjGl1jrTa8Ml0w1VQNe9p/0xbv+3cCTGYOhMvM4HkOZnrQp+gg==", + "dev": true, + "dependencies": { + "@thirdweb-dev/chains": "0.1.58", + "@thirdweb-dev/contracts-js": "1.3.16", + "@thirdweb-dev/crypto": "0.2.0", + "@thirdweb-dev/generated-abis": "0.0.1", + "@thirdweb-dev/merkletree": "0.2.0", + "@thirdweb-dev/storage": "2.0.5", + "abitype": "^0.2.5", + "bn.js": "^5.2.1", + "bs58": "^5.0.0", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "fast-deep-equal": "^3.1.3", + "tiny-invariant": "^1.2.0", + "tweetnacl": "^1.0.3", + "uuid": "^9.0.1", + "yaml": "^2.3.1", + "zod": "^3.22.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@aws-sdk/client-secrets-manager": "^3.215.0", + "ethers": "^5", + "ethers-aws-kms-signer": "^1.3.2", + "zksync-web3": "^0.14.3" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-secrets-manager": { + "optional": true + }, + "ethers-aws-kms-signer": { + "optional": true + }, + "zksync-web3": { + "optional": true + } + } + }, + "node_modules/@thirdweb-dev/storage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@thirdweb-dev/storage/-/storage-2.0.5.tgz", + "integrity": "sha512-I3DK/ZNWOMa/XE2hfJnGKVfc9INn5c3if1qavyK/1fjJBxhUiUXjT59UYbuoWhHLEq0rS/QZVOGS/9qcOs/DAQ==", + "dev": true, + "dependencies": { + "@thirdweb-dev/crypto": "0.2.0", + "cid-tool": "^3.0.0", + "form-data": "^4.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@typechain/ethers-v5": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", + "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/providers": "^5.0.0", + "ethers": "^5.1.3", + "typechain": "^8.1.1", + "typescript": ">=4.3.0" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "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": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.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/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/abitype": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.2.5.tgz", + "integrity": "sha512-t1iiokWYpkrziu4WL2Gb6YdGvaP9ZKs7WnA39TI8TsW2E99GVRgDPW/xOKhzoCdyxOYt550CNYEFluCwGaFHaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "engines": { + "pnpm": ">=7" + }, + "peerDependencies": { + "typescript": ">=4.7.4", + "zod": ">=3.19.1" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "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.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "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==", + "dev": true, + "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/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": "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/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/antlr4": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1.tgz", + "integrity": "sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "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 + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "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/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/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/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/ast-parents": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", + "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "dev": true + }, + "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" + } + ] + }, + "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/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/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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dev": true, + "dependencies": { + "base-x": "^4.0.0" + } + }, + "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" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-reverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", + "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==", + "dev": true + }, + "node_modules/bufio": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.2.1.tgz", + "integrity": "sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/bundle-require": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-3.1.2.tgz", + "integrity": "sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.13" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/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/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "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/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "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/cid-tool": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cid-tool/-/cid-tool-3.0.0.tgz", + "integrity": "sha512-rgpV/LzuxUsGCJvUHe9+OuOAENVCiTn+mgGT8Nee1qDLS3xFGBUvZQdsY9MEpUi0YOFy6oz1pybHErcvE4SlGw==", + "dev": true, + "dependencies": { + "cids": "^1.0.0", + "explain-error": "^1.0.4", + "multibase": "^4.0.2", + "multihashes": "^4.0.2", + "split2": "^3.1.1", + "uint8arrays": "^2.1.3", + "yargs": "^16.2.0" + }, + "bin": { + "cid": "src/cli/bin.js" + } + }, + "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", + "dev": true, + "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/cids/node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "dev": true, + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "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/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/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/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/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/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/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/command-line-usage/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/command-line-usage/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/command-line-usage/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/command-line-usage/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/command-line-usage/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/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "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-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/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "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/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "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, + "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/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "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/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/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/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "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, + "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==", + "dev": true + }, + "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/erc721a": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/erc721a/-/erc721a-3.3.0.tgz", + "integrity": "sha512-LqwmMcDPS3H9y7ZO+9B7R9sEoWApra17d4PwodXuP1072jP653jdo0TYkJbK4G5pBUFDdB5TCZwmJ6EQbmrysQ==", + "dev": true, + "dependencies": { + "@openzeppelin/contracts": "^4.4.2" + } + }, + "node_modules/erc721a-upgradeable": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/erc721a-upgradeable/-/erc721a-upgradeable-3.3.0.tgz", + "integrity": "sha512-ILE0SjKuvhx+PABG0A/41QUp0MFiYmzrgo71htQ0Ov6JfDOmgUzGxDW8gZuYfKrdlYjNwSAqMpUFWBbyW3sWBA==", + "dev": true, + "dependencies": { + "@openzeppelin/contracts-upgradeable": "^4.4.2" + } + }, + "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/esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "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-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": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "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.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "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.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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.3", + "strip-ansi": "^6.0.1", + "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-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "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-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "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/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/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/explain-error": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/explain-error/-/explain-error-1.0.4.tgz", + "integrity": "sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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==", + "dev": true + }, + "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.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "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/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.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.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.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "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/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "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/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/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/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/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.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==", + "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/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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==", + "dev": true + }, + "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-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-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-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-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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/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/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==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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==", + "dev": true + }, + "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/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/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, + "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/keccak256": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "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/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.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "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 + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/log-symbols": { + "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/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "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/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/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "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/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/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/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 + }, + "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==", + "dev": true + }, + "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/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/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/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/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/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/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", + "dev": true, + "dependencies": { + "@multiformats/base-x": "^4.0.1" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + } + }, + "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", + "dev": true, + "dependencies": { + "uint8arrays": "^3.0.0", + "varint": "^6.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "dev": true + }, + "node_modules/multihashes": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", + "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", + "dev": true, + "dependencies": { + "multibase": "^4.0.1", + "uint8arrays": "^3.0.0", + "varint": "^5.0.2" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/multihashes/node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "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/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/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 + }, + "node_modules/node-gyp-build": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.0.tgz", + "integrity": "sha512-PbZERfeFdrHQOOXiAKOY0VPbykZy90ndPKk0d+CFDegTKmWp1VgOTz2xACVbr1BjCWxrQp68CXtvNsveFhqDJg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "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/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/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/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-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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-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/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/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prettier-plugin-solidity": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.2.0.tgz", + "integrity": "sha512-fgxcUZpVAP+LlRfy5JI5oaAkXGkmsje2VJ5krv/YMm+rcTZbIUwFguSw5f+WFuttMjpDm6wB4UL7WVkArEfiVA==", + "dev": true, + "dependencies": { + "@solidity-parser/parser": "^0.16.2", + "semver": "^7.5.4", + "solidity-comments-extractor": "^0.0.7" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "prettier": ">=2.3.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "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/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/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/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/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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==", + "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/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/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/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/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/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/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/solhint": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.6.2.tgz", + "integrity": "sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==", + "dev": true, + "dependencies": { + "@solidity-parser/parser": "^0.16.0", + "ajv": "^6.12.6", + "antlr4": "^4.11.0", + "ast-parents": "^0.0.1", + "chalk": "^4.1.2", + "commander": "^10.0.0", + "cosmiconfig": "^8.0.0", + "fast-diff": "^1.2.0", + "glob": "^8.0.3", + "ignore": "^5.2.4", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "semver": "^7.5.2", + "strip-ansi": "^6.0.1", + "table": "^6.8.1", + "text-table": "^0.2.0" + }, + "bin": { + "solhint": "solhint.js" + }, + "optionalDependencies": { + "prettier": "^2.8.3" + } + }, + "node_modules/solhint-plugin-prettier": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz", + "integrity": "sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "peerDependencies": { + "prettier": "^1.15.0 || ^2.0.0", + "prettier-plugin-solidity": "^1.0.0-alpha.14" + } + }, + "node_modules/solhint/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/solhint/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "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/solhint/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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 + }, + "node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true + }, + "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/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-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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/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/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/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/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "dev": true + }, + "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/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "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/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tsup": { + "version": "5.12.9", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-5.12.9.tgz", + "integrity": "sha512-dUpuouWZYe40lLufo64qEhDpIDsWhRbr2expv5dHEMjwqeKJS2aXA/FPqs1dxO4T6mBojo7rvo3jP9NNzaKyDg==", + "dev": true, + "dependencies": { + "bundle-require": "^3.0.2", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.14.25", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^3.0.1", + "resolve-from": "^5.0.0", + "rollup": "^2.74.1", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "peerDependencies": { + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": "^4.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tsup/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "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/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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/typechain/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/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==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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==", + "dev": true + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "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/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "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/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "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/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/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/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "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/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/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" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json index 558343bd7..87431a6ab 100644 --- a/package.json +++ b/package.json @@ -8,51 +8,50 @@ "/contracts/**/*.sol" ], "devDependencies": { - "@chainlink/contracts": "^0.6.1", - "@openzeppelin/contracts": "4.7.3", - "@openzeppelin/contracts-upgradeable": "4.7.3", + "@chainlink/contracts": "^0.8.0", + "@openzeppelin/contracts": "^4.9.3", + "@openzeppelin/contracts-upgradeable": "^4.9.3", "@thirdweb-dev/chains": "^0.1.54", - "@thirdweb-dev/dynamic-contracts": "^1.1.2", - "@thirdweb-dev/sdk": "^4.0.14", - "@typechain/ethers-v5": "^10.0.0", + "@thirdweb-dev/dynamic-contracts": "^1.2.4", + "@thirdweb-dev/sdk": "^4.0.16", + "@typechain/ethers-v5": "^10.2.1", "@types/fs-extra": "^9.0.13", - "@types/mocha": "^9.1.0", - "@types/node": "^17.0.21", - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.13.0", - "dotenv": "^16.0.0", + "@types/mocha": "^9.1.1", + "@types/node": "^17.0.45", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "dotenv": "^16.3.1", "erc721a": "3.3.0", "erc721a-upgradeable": "^3.3.0", - "eslint": "^8.10.0", - "eslint-config-prettier": "^8.5.0", - "ethers": "^5.0.0", - "fs-extra": "^10.0.1", + "eslint": "^8.54.0", + "eslint-config-prettier": "^8.10.0", + "ethers": "^5.7.2", + "fs-extra": "^10.1.0", "keccak256": "^1.0.6", - "merkletreejs": "^0.2.31", - "mocha": "^9.2.1", - "prettier": "^2.5.1", - "prettier-plugin-solidity": "^1.0.0-beta.19", - "solhint": "^3.3.7", + "mocha": "^9.2.2", + "prettier": "^2.8.8", + "prettier-plugin-solidity": "^1.2.0", + "solhint": "^3.6.2", "solhint-plugin-prettier": "^0.0.5", - "ts-node": "^10.6.0", - "tslib": "^2.3.1", - "tsup": "^5.11.11", - "typechain": "^8.0.0", - "typescript": "^4.4.4" + "ts-node": "^10.9.1", + "tslib": "^2.6.2", + "tsup": "^5.12.9", + "typechain": "^8.3.2", + "typescript": "^4.9.5" }, "peerDependencies": { "ethers": "^5.0.0" }, "resolutions": { - "typescript": "^4.4.4" + "typescript": "^5.3.2" }, "scripts": { "clean": "forge clean && rm -rf abi/ && rm -rf artifacts_forge/ && rm -rf contract_artifacts && rm -rf dist/ && rm -rf typechain/", "compile": "forge build && npx ts-node scripts/package-release.ts", "lint": "solhint \"contracts/**/*.sol\"", - "prettier": "prettier --config .prettierrc --write \"{contracts,src}/**/*.{js,json,sol,ts}\"", - "prettier:list-different": "prettier --config .prettierrc --list-different \"**/*.{js,json,sol,ts}\"", - "prettier:contracts": "prettier --config .prettierrc --list-different \"{contracts,src}/**/*.sol\"", + "prettier": "prettier --config .prettierrc --write --plugin=prettier-plugin-solidity '{contracts,src}/**/*.sol'", + "prettier:list-different": "prettier --config .prettierrc --plugin=prettier-plugin-solidity --list-different '**/*.sol'", + "prettier:contracts": "prettier --config .prettierrc --plugin=prettier-plugin-solidity --list-different '{contracts,src}/**/*.sol'", "test": "forge test", "typechain": "typechain --target ethers-v5 --out-dir ./typechain artifacts_forge/**/*.json", "build": "yarn clean && yarn compile", @@ -61,6 +60,5 @@ "gas": "forge test --mc Benchmark --gas-report > gasreport.txt", "forge:snapshot": "forge snapshot --check", "aabenchmark": "forge test --mc AABenchmarkPrepare && forge test --mc ProfileThirdwebAccount -vvv" - }, - "dependencies": {} + } } diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index d298aa104..000000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -manticore==0.3.7 diff --git a/src/test/EvolvingNFT.t.sol b/src/test/EvolvingNFT.t.sol index 6adf5f2c4..8a695b420 100644 --- a/src/test/EvolvingNFT.t.sol +++ b/src/test/EvolvingNFT.t.sol @@ -12,20 +12,20 @@ import { Drop } from "contracts/extension/upgradeable/Drop.sol"; import { SharedMetadataBatch } from "contracts/extension/upgradeable/SharedMetadataBatch.sol"; import { ISharedMetadataBatch } from "contracts/extension/interface/ISharedMetadataBatch.sol"; import { RulesEngine, IRulesEngine } from "contracts/extension/upgradeable/RulesEngine.sol"; -import { NFTMetadataRenderer } from "contracts/lib/NFTMetadataRendererLib.sol"; +import { NFTMetadataRenderer } from "contracts/lib/NFTMetadataRenderer.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; import { PermissionsEnumerable as DynamicPermissionsEnumerable } from "contracts/extension/upgradeable/PermissionsEnumerable.sol"; // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; +import { Strings } from "contracts/lib/Strings.sol"; +import { Permissions } from "contracts/extension/Permissions.sol"; +import { IERC721 } from "./mocks/MockERC721.sol"; import "./utils/BaseTest.sol"; -import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract EvolvingNFTTest is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; event SharedMetadataUpdated( bytes32 indexed id, @@ -288,7 +288,7 @@ contract EvolvingNFTTest is BaseTest { alp.pricePerToken = 0; alp.currency = address(erc20); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist IDrop.ClaimCondition[] memory conditions = new IDrop.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -382,9 +382,9 @@ contract EvolvingNFTTest is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -402,9 +402,9 @@ contract EvolvingNFTTest is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -565,7 +565,7 @@ contract EvolvingNFTTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist IDrop.ClaimCondition[] memory conditions = new IDrop.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -726,7 +726,7 @@ contract EvolvingNFTTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist IDrop.ClaimCondition[] memory conditions = new IDrop.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -779,7 +779,7 @@ contract EvolvingNFTTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist IDrop.ClaimCondition[] memory conditions = new IDrop.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -841,7 +841,7 @@ contract EvolvingNFTTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist IDrop.ClaimCondition[] memory conditions = new IDrop.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -899,7 +899,7 @@ contract EvolvingNFTTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist IDrop.ClaimCondition[] memory conditions = new IDrop.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -958,7 +958,7 @@ contract EvolvingNFTTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); @@ -1176,7 +1176,7 @@ contract EvolvingNFTTest is BaseTest { alp.pricePerToken = 0; alp.currency = address(erc20); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist IDrop.ClaimCondition[] memory conditions = new IDrop.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; diff --git a/src/test/Forwarder.t.sol b/src/test/Forwarder.t.sol index 38fd7a1d2..8ff96ca51 100644 --- a/src/test/Forwarder.t.sol +++ b/src/test/Forwarder.t.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -import "contracts/infra/forwarder/Forwarder.sol"; -import "contracts/infra/forwarder/ForwarderConsumer.sol"; +import { Forwarder } from "contracts/infra/forwarder/Forwarder.sol"; +import { ForwarderConsumer } from "contracts/infra/forwarder/ForwarderConsumer.sol"; import "./utils/BaseTest.sol"; @@ -47,11 +47,10 @@ contract ForwarderTest is BaseTest { Regular `Forwarder`: chainId in typehash //////////////////////////////////////////////////////////////*/ - function signForwarderRequest(Forwarder.ForwardRequest memory forwardRequest, uint256 privateKey) - internal - view - returns (bytes memory) - { + function signForwarderRequest( + Forwarder.ForwardRequest memory forwardRequest, + uint256 privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashForwardRequest, forwardRequest.from, diff --git a/src/test/ForwarderChainlessDomain.t.sol b/src/test/ForwarderChainlessDomain.t.sol index 4863316d1..e293b7419 100644 --- a/src/test/ForwarderChainlessDomain.t.sol +++ b/src/test/ForwarderChainlessDomain.t.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -import "contracts/infra/forwarder/ForwarderConsumer.sol"; -import "contracts/infra/forwarder/ForwarderChainlessDomain.sol"; +import { ForwarderConsumer } from "contracts/infra/forwarder/ForwarderConsumer.sol"; +import { ForwarderChainlessDomain } from "contracts/infra/forwarder/ForwarderChainlessDomain.sol"; import "./utils/BaseTest.sol"; @@ -48,11 +48,10 @@ contract ForwarderChainlessDomainTest is BaseTest { Updated `Forwarder`: chainId in ForwardRequest, not typehash. //////////////////////////////////////////////////////////////*/ - function signForwarderRequest(ForwarderChainlessDomain.ForwardRequest memory forwardRequest, uint256 privateKey) - internal - view - returns (bytes memory) - { + function signForwarderRequest( + ForwarderChainlessDomain.ForwardRequest memory forwardRequest, + uint256 privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashForwardRequest, forwardRequest.from, diff --git a/src/test/LoyaltyCard.t.sol b/src/test/LoyaltyCard.t.sol index 89d8c69c3..9f0d1f022 100644 --- a/src/test/LoyaltyCard.t.sol +++ b/src/test/LoyaltyCard.t.sol @@ -6,11 +6,12 @@ import "@ds-test/test.sol"; import "./utils/BaseTest.sol"; import "contracts/infra/TWProxy.sol"; +import { Strings } from "contracts/lib/Strings.sol"; import { LoyaltyCard } from "contracts/prebuilts/loyalty/LoyaltyCard.sol"; contract LoyaltyCardTest is BaseTest { LoyaltyCard internal loyaltyCard; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal typehashMintRequest; bytes32 internal nameHash; @@ -83,11 +84,10 @@ contract LoyaltyCardTest is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(LoyaltyCard.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + LoyaltyCard.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/LoyaltyPoints.t.sol b/src/test/LoyaltyPoints.t.sol index 7a60be763..c557091bf 100644 --- a/src/test/LoyaltyPoints.t.sol +++ b/src/test/LoyaltyPoints.t.sol @@ -6,11 +6,12 @@ import "@ds-test/test.sol"; import "./utils/BaseTest.sol"; import "contracts/infra/TWProxy.sol"; +import { Strings } from "contracts/lib/Strings.sol"; import { LoyaltyPoints } from "contracts/prebuilts/unaudited/loyalty/LoyaltyPoints.sol"; contract LoyaltyPointsTest is BaseTest { LoyaltyPoints internal loyaltyPoints; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal typehashMintRequest; bytes32 internal nameHash; @@ -78,11 +79,10 @@ contract LoyaltyPointsTest is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(LoyaltyPoints.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + LoyaltyPoints.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/Multiwrap.t.sol b/src/test/Multiwrap.t.sol index 4b862f3b0..a8b34e923 100644 --- a/src/test/Multiwrap.t.sol +++ b/src/test/Multiwrap.t.sol @@ -5,8 +5,8 @@ import { Multiwrap } from "contracts/prebuilts/multiwrap/Multiwrap.sol"; import { ITokenBundle } from "contracts/extension/interface/ITokenBundle.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import { MockERC20 } from "./mocks/MockERC20.sol"; +import { Strings } from "contracts/lib/Strings.sol"; import { Wallet } from "./utils/Wallet.sol"; import "./utils/BaseTest.sol"; @@ -18,11 +18,7 @@ contract MultiwrapReentrant is MockERC20, ITokenBundle { multiwrap = Multiwrap(_multiwrap); } - function transferFrom( - address from, - address to, - uint256 amount - ) public override returns (bool) { + function transferFrom(address from, address to, uint256 amount) public override returns (bool) { multiwrap.unwrap(0, address(this)); return super.transferFrom(from, to, amount); } @@ -119,9 +115,9 @@ contract MultiwrapTest is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -139,9 +135,9 @@ contract MultiwrapTest is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -446,7 +442,7 @@ contract MultiwrapTest is BaseTest { address recipient = address(0x123); vm.prank(address(tokenOwner)); - vm.expectRevert("ERC721: caller is not token owner nor approved"); + vm.expectRevert("ERC721: caller is not token owner or approved"); multiwrap.wrap(wrappedContent, uriForWrappedToken, recipient); } @@ -485,7 +481,7 @@ contract MultiwrapTest is BaseTest { address recipient = address(0x123); vm.prank(address(tokenOwner)); - vm.expectRevert("ERC721: caller is not token owner nor approved"); + vm.expectRevert("ERC721: caller is not token owner or approved"); multiwrap.wrap(wrappedContent, uriForWrappedToken, recipient); } @@ -498,7 +494,7 @@ contract MultiwrapTest is BaseTest { address recipient = address(0x123); vm.prank(address(tokenOwner)); - vm.expectRevert("ERC1155: caller is not token owner nor approved"); + vm.expectRevert("ERC1155: caller is not token owner or approved"); multiwrap.wrap(wrappedContent, uriForWrappedToken, recipient); } diff --git a/src/test/OpenEditionERC721.t.sol b/src/test/OpenEditionERC721.t.sol index 31a73b7c7..fb9310f30 100644 --- a/src/test/OpenEditionERC721.t.sol +++ b/src/test/OpenEditionERC721.t.sol @@ -2,19 +2,17 @@ pragma solidity ^0.8.0; import { ERC721AUpgradeable, OpenEditionERC721, ISharedMetadata } from "contracts/prebuilts/open-edition/OpenEditionERC721.sol"; -import { NFTMetadataRenderer } from "contracts/lib/NFTMetadataRendererLib.sol"; +import { NFTMetadataRenderer } from "contracts/lib/NFTMetadataRenderer.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; import "./utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract OpenEditionERC721Test is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; event SharedMetadataUpdated(string name, string description, string imageURI, string animationURI); @@ -77,9 +75,9 @@ contract OpenEditionERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -97,9 +95,9 @@ contract OpenEditionERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -258,7 +256,7 @@ contract OpenEditionERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist OpenEditionERC721.ClaimCondition[] memory conditions = new OpenEditionERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -420,7 +418,7 @@ contract OpenEditionERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist OpenEditionERC721.ClaimCondition[] memory conditions = new OpenEditionERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -470,7 +468,7 @@ contract OpenEditionERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist OpenEditionERC721.ClaimCondition[] memory conditions = new OpenEditionERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -529,7 +527,7 @@ contract OpenEditionERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist OpenEditionERC721.ClaimCondition[] memory conditions = new OpenEditionERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -584,7 +582,7 @@ contract OpenEditionERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist OpenEditionERC721.ClaimCondition[] memory conditions = new OpenEditionERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -640,7 +638,7 @@ contract OpenEditionERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); diff --git a/src/test/SignatureDrop.t.sol b/src/test/SignatureDrop.t.sol index c43df345b..ea47d9d64 100644 --- a/src/test/SignatureDrop.t.sol +++ b/src/test/SignatureDrop.t.sol @@ -5,14 +5,12 @@ import { SignatureDrop, IDropSinglePhase, IDelayedReveal, ISignatureMintERC721, // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; import "./utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract SignatureDropTest is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); event TokenURIRevealed(uint256 indexed index, string revealedURI); @@ -69,9 +67,9 @@ contract SignatureDropTest is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -89,9 +87,9 @@ contract SignatureDropTest is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -535,9 +533,9 @@ contract SignatureDropTest is BaseTest { bytes memory errorMessage = abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(address(this)), 20), + Strings.toHexString(uint160(address(this)), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("MINTER_ROLE")), 32) + Strings.toHexString(uint256(keccak256("MINTER_ROLE")), 32) ); vm.expectRevert(errorMessage); @@ -622,11 +620,10 @@ contract SignatureDropTest is BaseTest { Signature Mint Tests //////////////////////////////////////////////////////////////*/ - function signMintRequest(SignatureDrop.MintRequest memory mintrequest, uint256 privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + SignatureDrop.MintRequest memory mintrequest, + uint256 privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, mintrequest.to, @@ -1116,7 +1113,7 @@ contract SignatureDropTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); @@ -1354,12 +1351,7 @@ contract MaliciousReceiver { alp = _alp; } - function onERC721Received( - address, - address, - uint256, - bytes calldata - ) external returns (bytes4) { + function onERC721Received(address, address, uint256, bytes calldata) external returns (bytes4) { if (claim && loop) { loop = false; claim = false; diff --git a/src/test/TWFactory.t.sol b/src/test/TWFactory.t.sol index 37e5307c1..474286352 100644 --- a/src/test/TWFactory.t.sol +++ b/src/test/TWFactory.t.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.11; // Test imports import "./utils/BaseTest.sol"; -import "contracts/infra/TWFactory.sol"; -import "contracts/infra/TWRegistry.sol"; +import { TWFactory } from "contracts/infra/TWFactory.sol"; +import { TWRegistry } from "contracts/infra/TWRegistry.sol"; // Helpers import "@openzeppelin/contracts/utils/Create2.sol"; diff --git a/src/test/TWFee.t.sol b/src/test/TWFee.t.sol deleted file mode 100644 index c5c042a3a..000000000 --- a/src/test/TWFee.t.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.11; - -// Test imports -import "./mocks/MockThirdwebContract.sol"; -import "./utils/BaseTest.sol"; -import "contracts/infra/TWFee.sol"; - -// Helpers -import "@openzeppelin/contracts/utils/Create2.sol"; -import "contracts/infra/TWRegistry.sol"; -import "contracts/infra/TWFactory.sol"; -import "contracts/infra/TWProxy.sol"; - -contract TWFeeTest is BaseTest { - // Target contract - TWFee internal twFee; - - // Helper contracts - TWRegistry internal twRegistry; - TWFactory internal twFactory; - MockThirdwebContract internal mockModule; - - // Actors - address internal mockModuleDeployer; - address internal moduleAdmin = address(0x1); - address internal feeAdmin = address(0x2); - address internal notFeeAdmin = address(0x3); - address internal payer = address(0x4); - - // Test params - address internal trustedForwarder = address(0x4); - address internal thirdwebTreasury = address(0x5); - - // ===== Set up ===== - - function setUp() public override {} -} diff --git a/src/test/TWMultichainRegistry.t.sol b/src/test/TWMultichainRegistry.t.sol index 8e27e15da..b51cabec7 100644 --- a/src/test/TWMultichainRegistry.t.sol +++ b/src/test/TWMultichainRegistry.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.11; // Test imports import "./utils/BaseTest.sol"; import "contracts/infra/interface/ITWMultichainRegistry.sol"; -import "contracts/infra/TWMultichainRegistry.sol"; +import { TWMultichainRegistry } from "contracts/infra/TWMultichainRegistry.sol"; import "./mocks/MockThirdwebContract.sol"; import "contracts/extension/interface/plugin/IPluginMap.sol"; diff --git a/src/test/TWRegistry.t.sol b/src/test/TWRegistry.t.sol index 5a691ea8b..8d9a8c79f 100644 --- a/src/test/TWRegistry.t.sol +++ b/src/test/TWRegistry.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.11; // Test imports import "./utils/BaseTest.sol"; -import "contracts/infra/TWRegistry.sol"; +import { TWRegistry } from "contracts/infra/TWRegistry.sol"; interface ITWRegistryData { event Added(address indexed deployer, address indexed moduleAddress); diff --git a/src/test/TieredDrop.t.sol b/src/test/TieredDrop.t.sol index e595cf6e3..9c04f8422 100644 --- a/src/test/TieredDrop.t.sol +++ b/src/test/TieredDrop.t.sol @@ -2,13 +2,12 @@ pragma solidity ^0.8.0; import "./utils/BaseTest.sol"; -import "contracts/lib/TWStrings.sol"; import { TieredDrop } from "contracts/prebuilts/tiered-drop/TieredDrop.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; contract TieredDropTest is BaseTest { - using TWStrings for uint256; + using Strings for uint256; TieredDrop public tieredDrop; @@ -940,7 +939,7 @@ contract TieredDropTest is BaseTest { } contract TieredDropBechmarkTest is BaseTest { - using TWStrings for uint256; + using Strings for uint256; TieredDrop public tieredDrop; diff --git a/src/test/airdrop/AirdropERC1155.t.sol b/src/test/airdrop/AirdropERC1155.t.sol index 33b9b0b22..161e9d364 100644 --- a/src/test/airdrop/AirdropERC1155.t.sol +++ b/src/test/airdrop/AirdropERC1155.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -import "contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol"; +import { AirdropERC1155, IAirdropERC1155 } from "contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol"; // Test imports import { Wallet } from "../utils/Wallet.sol"; @@ -129,13 +129,7 @@ contract AirdropERC1155GasTest is BaseTest { console.log(gasleft()); } - function onERC1155Received( - address, - address, - uint256, - uint256, - bytes calldata - ) external pure returns (bytes4) { + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { return this.onERC1155Received.selector; } } diff --git a/src/test/airdrop/AirdropERC1155Claimable.t.sol b/src/test/airdrop/AirdropERC1155Claimable.t.sol index 4d703e74d..4ce582d16 100644 --- a/src/test/airdrop/AirdropERC1155Claimable.t.sol +++ b/src/test/airdrop/AirdropERC1155Claimable.t.sol @@ -1,202 +1,218 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -// import "contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol"; +import "contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol"; + +// Test imports +import { Wallet } from "../utils/Wallet.sol"; +import { TWProxy } from "contracts/infra/TWProxy.sol"; +import { BaseTest } from "../utils/BaseTest.sol"; +import { Strings } from "contracts/lib/Strings.sol"; + +contract AirdropERC1155ClaimableTest is BaseTest { + address public implementation; + AirdropERC1155Claimable internal drop; + + function setUp() public override { + super.setUp(); + + address implementation = address(new AirdropERC1155Claimable()); + + // Deploy proxy pointing to implementaion. + vm.prank(deployer); + drop = AirdropERC1155Claimable( + address( + new TWProxy( + implementation, + abi.encodeCall( + AirdropERC1155Claimable.initialize, + ( + forwarders(), + address(airdropTokenOwner), + address(erc1155), + _airdropTokenIdsERC1155, + _airdropAmountsERC1155, + 1000, + _airdropWalletClaimCountERC1155, + _airdropMerkleRootERC1155 + ) + ) + ) + ) + ); + + erc1155.mint(address(airdropTokenOwner), 0, 100); + erc1155.mint(address(airdropTokenOwner), 1, 100); + erc1155.mint(address(airdropTokenOwner), 2, 100); + erc1155.mint(address(airdropTokenOwner), 3, 100); + erc1155.mint(address(airdropTokenOwner), 4, 100); + + airdropTokenOwner.setApprovalForAllERC1155(address(erc1155), address(drop), true); + } + + /*/////////////////////////////////////////////////////////////// + Unit tests: `claim` -- for allowlisted claimers + //////////////////////////////////////////////////////////////*/ + + function test_state_claim_allowlistedClaimer() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; + uint256 id = 0; + + uint256 _availableAmount = drop.availableAmount(id); + + vm.prank(receiver); + drop.claim(receiver, quantity, id, proofs, 5); + + assertEq(erc1155.balanceOf(receiver, id), quantity); + assertEq(drop.supplyClaimedByWallet(id, receiver), quantity); + assertEq(drop.availableAmount(id), _availableAmount - quantity); + } + + function test_revert_claim_notInAllowlist_invalidQty() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(4)); // generate proof with incorrect amount + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; + uint256 id = 0; + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, id, proofs, 5); + } + + function test_revert_claim_allowlistedClaimer_proofClaimed() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; + uint256 id = 0; + + vm.prank(receiver); + drop.claim(receiver, quantity, id, proofs, 5); + + quantity = 3; + + vm.prank(receiver); + drop.claim(receiver, quantity, id, proofs, 5); + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, id, proofs, 5); + } + + function test_state_claim_allowlistedClaimer_invalidQuantity() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 6; + uint256 id = 0; + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, id, proofs, 5); + } -// // Test imports -// import { Wallet } from "../utils/Wallet.sol"; -// import "../utils/BaseTest.sol"; + function test_revert_claim_allowlistedClaimer_airdropExpired() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1001); -// contract AirdropERC1155ClaimableTest is BaseTest { -// AirdropERC1155Claimable internal drop; + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 5; + uint256 id = 0; -// function setUp() public override { -// super.setUp(); - -// drop = AirdropERC1155Claimable(getContract("AirdropERC1155Claimable")); - -// erc1155.mint(address(airdropTokenOwner), 0, 100); -// erc1155.mint(address(airdropTokenOwner), 1, 100); -// erc1155.mint(address(airdropTokenOwner), 2, 100); -// erc1155.mint(address(airdropTokenOwner), 3, 100); -// erc1155.mint(address(airdropTokenOwner), 4, 100); - -// airdropTokenOwner.setApprovalForAllERC1155(address(erc1155), address(drop), true); -// } - -// /*/////////////////////////////////////////////////////////////// -// Unit tests: `claim` -- for allowlisted claimers -// //////////////////////////////////////////////////////////////*/ - -// function test_state_claim_allowlistedClaimer() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 2; -// uint256 id = 0; - -// uint256 _availableAmount = drop.availableAmount(id); - -// vm.prank(receiver); -// drop.claim(receiver, quantity, id, proofs, 5); - -// assertEq(erc1155.balanceOf(receiver, id), quantity); -// assertEq(drop.supplyClaimedByWallet(id, receiver), quantity); -// assertEq(drop.availableAmount(id), _availableAmount - quantity); -// } - -// function test_revert_claim_notInAllowlist_invalidQty() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(4); // generate proof with incorrect amount -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 2; -// uint256 id = 0; - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, id, proofs, 5); -// } - -// function test_revert_claim_allowlistedClaimer_proofClaimed() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 2; -// uint256 id = 0; - -// vm.prank(receiver); -// drop.claim(receiver, quantity, id, proofs, 5); - -// quantity = 3; - -// vm.prank(receiver); -// drop.claim(receiver, quantity, id, proofs, 5); - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, id, proofs, 5); -// } - -// function test_state_claim_allowlistedClaimer_invalidQuantity() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 6; -// uint256 id = 0; - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, id, proofs, 5); -// } - -// function test_revert_claim_allowlistedClaimer_airdropExpired() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1001); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 5; -// uint256 id = 0; - -// vm.prank(receiver); -// vm.expectRevert("airdrop expired."); -// drop.claim(receiver, quantity, id, proofs, 5); -// } - -// /*/////////////////////////////////////////////////////////////// -// Unit tests: `claim` -- for open claiming -// //////////////////////////////////////////////////////////////*/ - -// function test_state_claim_nonAllowlistedClaimer() public { -// address receiver = address(0x123); -// uint256 quantity = 1; -// bytes32[] memory proofs; -// uint256 id = 0; - -// uint256 _availableAmount = drop.availableAmount(id); - -// vm.prank(receiver); -// drop.claim(receiver, quantity, id, proofs, 0); - -// assertEq(erc1155.balanceOf(receiver, id), quantity); -// assertEq(drop.supplyClaimedByWallet(id, receiver), quantity); -// assertEq(drop.availableAmount(id), _availableAmount - quantity); -// } - -// function test_revert_claim_nonAllowlistedClaimer_invalidQuantity() public { -// address receiver = address(0x123); -// uint256 quantity = 2; -// bytes32[] memory proofs; -// uint256 id = 0; - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, id, proofs, 0); -// } - -// function test_revert_claim_nonAllowlistedClaimer_exceedsAvailable() public { -// uint256 id = 0; -// uint256 _availableAmount = drop.availableAmount(id); -// bytes32[] memory proofs; - -// uint256 i = 0; -// for (; i < _availableAmount; i++) { -// address receiver = getActor(uint160(i)); -// vm.prank(receiver); -// drop.claim(receiver, 1, id, proofs, 0); -// } - -// address receiver = getActor(uint160(i)); -// vm.prank(receiver); -// vm.expectRevert("exceeds available tokens."); -// drop.claim(receiver, 1, id, proofs, 0); -// } -// } + vm.prank(receiver); + vm.expectRevert("airdrop expired."); + drop.claim(receiver, quantity, id, proofs, 5); + } + + /*/////////////////////////////////////////////////////////////// + Unit tests: `claim` -- for open claiming + //////////////////////////////////////////////////////////////*/ + + function test_state_claim_nonAllowlistedClaimer() public { + address receiver = address(0x123); + uint256 quantity = 1; + bytes32[] memory proofs; + uint256 id = 0; + + uint256 _availableAmount = drop.availableAmount(id); + + vm.prank(receiver); + drop.claim(receiver, quantity, id, proofs, 0); + + assertEq(erc1155.balanceOf(receiver, id), quantity); + assertEq(drop.supplyClaimedByWallet(id, receiver), quantity); + assertEq(drop.availableAmount(id), _availableAmount - quantity); + } + + function test_revert_claim_nonAllowlistedClaimer_invalidQuantity() public { + address receiver = address(0x123); + uint256 quantity = 2; + bytes32[] memory proofs; + uint256 id = 0; + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, id, proofs, 0); + } + + function test_revert_claim_nonAllowlistedClaimer_exceedsAvailable() public { + uint256 id = 0; + uint256 _availableAmount = drop.availableAmount(id); + bytes32[] memory proofs; + + uint256 i = 0; + for (; i < _availableAmount; i++) { + address receiver = getActor(uint160(i)); + vm.prank(receiver); + drop.claim(receiver, 1, id, proofs, 0); + } + + address receiver = getActor(uint160(i)); + vm.prank(receiver); + vm.expectRevert("exceeds available tokens."); + drop.claim(receiver, 1, id, proofs, 0); + } +} diff --git a/src/test/airdrop/AirdropERC20Claimable.t.sol b/src/test/airdrop/AirdropERC20Claimable.t.sol index dde88bea2..efc5029a8 100644 --- a/src/test/airdrop/AirdropERC20Claimable.t.sol +++ b/src/test/airdrop/AirdropERC20Claimable.t.sol @@ -5,15 +5,39 @@ import "contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol"; // Test imports import { Wallet } from "../utils/Wallet.sol"; +import { TWProxy } from "contracts/infra/TWProxy.sol"; import "../utils/BaseTest.sol"; -contract CheckTest is BaseTest { +contract AirdropERC20ClaimableTest is BaseTest { + address public implementation; AirdropERC20Claimable internal drop; function setUp() public override { super.setUp(); - drop = AirdropERC20Claimable(getContract("AirdropERC20Claimable")); + address implementation = address(new AirdropERC20Claimable()); + + // Deploy proxy pointing to implementaion. + vm.prank(deployer); + drop = AirdropERC20Claimable( + address( + new TWProxy( + implementation, + abi.encodeCall( + AirdropERC20Claimable.initialize, + ( + forwarders(), + address(airdropTokenOwner), + address(erc20), + 10_000 ether, + 1000, + 1, + _airdropMerkleRootERC20 + ) + ) + ) + ) + ); erc20.mint(address(airdropTokenOwner), 10_000 ether); airdropTokenOwner.setAllowanceERC20(address(erc20), address(drop), type(uint256).max); @@ -23,162 +47,153 @@ contract CheckTest is BaseTest { Unit tests: `claim` -- for allowlisted claimers //////////////////////////////////////////////////////////////*/ - // function test_state_claim_allowlistedClaimer() public { - // string[] memory inputs = new string[](3); - // inputs[0] = "node"; - // inputs[1] = "src/test/scripts/getProof.ts"; - // inputs[2] = Strings.toString(5); + function test_state_claim_allowlistedClaimer() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); - // bytes memory result = vm.ffi(inputs); - // bytes32[] memory proofs = abi.decode(result, (bytes32[])); + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); - // vm.warp(1); + vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); - // uint256 quantity = 2; + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; - // uint256 _availableAmount = drop.availableAmount(); + uint256 _availableAmount = drop.availableAmount(); - // vm.prank(receiver); - // drop.claim(receiver, quantity, proofs, 5); + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 5); - // assertEq(erc20.balanceOf(receiver), quantity); - // assertEq(erc20.balanceOf(address(airdropTokenOwner)), _availableAmount - quantity); - // assertEq(drop.supplyClaimedByWallet(receiver), quantity); - // assertEq(drop.availableAmount(), _availableAmount - quantity); - // } + assertEq(erc20.balanceOf(receiver), quantity); + assertEq(erc20.balanceOf(address(airdropTokenOwner)), _availableAmount - quantity); + assertEq(drop.supplyClaimedByWallet(receiver), quantity); + assertEq(drop.availableAmount(), _availableAmount - quantity); + } - // function test_revert_claim_notInAllowlist() public { - // string[] memory inputs = new string[](3); - // inputs[0] = "node"; - // inputs[1] = "src/test/scripts/getProof.ts"; - // inputs[2] = Strings.toString(4); // generate proof with incorrect amount + function test_revert_claim_notInAllowlist() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(4)); // generate proof with incorrect amount - // bytes memory result = vm.ffi(inputs); - // bytes32[] memory proofs = abi.decode(result, (bytes32[])); + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); - // vm.warp(1); + vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); - // uint256 quantity = 2; + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; - // vm.prank(receiver); - // vm.expectRevert("not in whitelist."); - // drop.claim(receiver, quantity, proofs, 4); - // } + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 4); + } - // function test_state_claim_allowlistedClaimer_proofClaimed() public { - // string[] memory inputs = new string[](3); - // inputs[0] = "node"; - // inputs[1] = "src/test/scripts/getProof.ts"; - // inputs[2] = Strings.toString(5); + function test_state_claim_allowlistedClaimer_maxAmountClaimed() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); - // bytes memory result = vm.ffi(inputs); - // bytes32[] memory proofs = abi.decode(result, (bytes32[])); + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); - // vm.warp(1); + vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); - // uint256 quantity = 2; + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; - // vm.prank(receiver); - // drop.claim(receiver, quantity, proofs, 5); + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 5); - // quantity = 3; + quantity = 3; - // vm.prank(receiver); - // drop.claim(receiver, quantity, proofs, 5); + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 5); - // vm.prank(receiver); - // vm.expectRevert("proof claimed."); - // drop.claim(receiver, quantity, proofs, 5); - // } + // claiming again after exhausting claim limit + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 5); + } - // function test_state_claim_allowlistedClaimer_invalidQuantity() public { - // string[] memory inputs = new string[](3); - // inputs[0] = "node"; - // inputs[1] = "src/test/scripts/getProof.ts"; - // inputs[2] = Strings.toString(5); + function test_state_claim_allowlistedClaimer_invalidQuantity() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); - // bytes memory result = vm.ffi(inputs); - // bytes32[] memory proofs = abi.decode(result, (bytes32[])); + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); - // vm.warp(1); + vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); - // uint256 quantity = 6; + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 6; - // vm.prank(receiver); - // vm.expectRevert("invalid quantity."); - // drop.claim(receiver, quantity, proofs, 5); - // } + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 5); + } - // function test_state_claim_allowlistedClaimer_airdropExpired() public { - // string[] memory inputs = new string[](3); - // inputs[0] = "node"; - // inputs[1] = "src/test/scripts/getProof.ts"; - // inputs[2] = Strings.toString(5); + function test_state_claim_allowlistedClaimer_airdropExpired() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); - // bytes memory result = vm.ffi(inputs); - // bytes32[] memory proofs = abi.decode(result, (bytes32[])); + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); - // vm.warp(1001); + vm.warp(1001); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); - // uint256 quantity = 5; + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 5; - // vm.prank(receiver); - // vm.expectRevert("airdrop expired."); - // drop.claim(receiver, quantity, proofs, 5); - // } + vm.prank(receiver); + vm.expectRevert("airdrop expired."); + drop.claim(receiver, quantity, proofs, 5); + } /*/////////////////////////////////////////////////////////////// Unit tests: `claim` -- for open claiming //////////////////////////////////////////////////////////////*/ - // function test_state_claim_nonAllowlistedClaimer() public { - - // address receiver = address(0x123); - // uint256 quantity = 1; - // bytes32[] memory proofs; + function test_state_claim_nonAllowlistedClaimer() public { + address receiver = address(0x123); + uint256 quantity = 1; + bytes32[] memory proofs; - // uint256 _availableAmount = drop.availableAmount(); + uint256 _availableAmount = drop.availableAmount(); - // vm.prank(receiver); - // drop.claim(receiver, quantity, proofs, 0); + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 0); - // assertEq(erc20.balanceOf(receiver), quantity); - // assertEq(erc20.balanceOf(address(airdropTokenOwner)), _availableAmount - quantity); - // assertEq(drop.supplyClaimedByWallet(receiver), quantity); - // assertEq(drop.availableAmount(), _availableAmount - quantity); - // } - - // function test_revert_claim_nonAllowlistedClaimer_invalidQuantity() public { - - // address receiver = address(0x123); - // uint256 quantity = 2; - // bytes32[] memory proofs; - - // vm.prank(receiver); - // vm.expectRevert("invalid quantity."); - // drop.claim(receiver, quantity, proofs, 0); - // } + assertEq(erc20.balanceOf(receiver), quantity); + assertEq(erc20.balanceOf(address(airdropTokenOwner)), _availableAmount - quantity); + assertEq(drop.supplyClaimedByWallet(receiver), quantity); + assertEq(drop.availableAmount(), _availableAmount - quantity); + } - // function test_revert_claim_nonAllowlistedClaimer_exceedsAvailable() public { + function test_revert_claim_nonAllowlistedClaimer_invalidQuantity() public { + address receiver = address(0x123); + uint256 quantity = 2; + bytes32[] memory proofs; - // uint256 _availableAmount = drop.availableAmount(); - // bytes32[] memory proofs; + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 0); + } - // uint256 i = 0; - // for(; i < _availableAmount; i++) { - // address receiver = getActor(uint160(i)); - // vm.prank(receiver); - // drop.claim(receiver, 1, proofs, 0); - // } + function test_revert_claim_nonAllowlistedClaimer_exceedsAvailable() public { + uint256 _availableAmount = drop.availableAmount(); + bytes32[] memory proofs; - // address receiver = getActor(uint160(i)); - // vm.prank(receiver); - // vm.expectRevert("exceeds available tokens."); - // drop.claim(receiver, 1, proofs, 0); - // } + address receiver = getActor(uint160(2)); + vm.prank(receiver); + vm.expectRevert("exceeds available tokens."); + drop.claim(receiver, 10_001 ether, proofs, 0); + } } diff --git a/src/test/airdrop/AirdropERC721.t.sol b/src/test/airdrop/AirdropERC721.t.sol index 3fd5be31b..6b579eb46 100644 --- a/src/test/airdrop/AirdropERC721.t.sol +++ b/src/test/airdrop/AirdropERC721.t.sol @@ -111,12 +111,7 @@ contract AirdropERC721GasTest is BaseTest { console.log(gasleft()); } - function onERC721Received( - address, - address, - uint256, - bytes calldata - ) external pure returns (bytes4) { + function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { return this.onERC721Received.selector; } } diff --git a/src/test/airdrop/AirdropERC721Claimable.t.sol b/src/test/airdrop/AirdropERC721Claimable.t.sol index 0ef9e9546..917ac4043 100644 --- a/src/test/airdrop/AirdropERC721Claimable.t.sol +++ b/src/test/airdrop/AirdropERC721Claimable.t.sol @@ -1,205 +1,220 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -// import "contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol"; +import "contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol"; + +// Test imports +import { Wallet } from "../utils/Wallet.sol"; +import { TWProxy } from "contracts/infra/TWProxy.sol"; +import { BaseTest } from "../utils/BaseTest.sol"; +import { Strings } from "contracts/lib/Strings.sol"; + +contract AirdropERC721ClaimableTest is BaseTest { + address public implementation; + AirdropERC721Claimable internal drop; + + function setUp() public override { + super.setUp(); + + address implementation = address(new AirdropERC721Claimable()); + + // Deploy proxy pointing to implementaion. + vm.prank(deployer); + drop = AirdropERC721Claimable( + address( + new TWProxy( + implementation, + abi.encodeCall( + AirdropERC721Claimable.initialize, + ( + forwarders(), + address(airdropTokenOwner), + address(erc721), + _airdropTokenIdsERC721, + 1000, + 1, + _airdropMerkleRootERC721 + ) + ) + ) + ) + ); + + erc721.mint(address(airdropTokenOwner), 1000); + airdropTokenOwner.setApprovalForAllERC721(address(erc721), address(drop), true); + } + + // /*/////////////////////////////////////////////////////////////// + // Unit tests: `claim` -- for allowlisted claimers + // //////////////////////////////////////////////////////////////*/ + + function test_state_claim_allowlistedClaimer() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; + + uint256 _availableAmount = drop.availableAmount(); + uint256 _nextIndex = drop.nextIndex(); + + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 5); + + for (uint256 i = 0; i < quantity; i++) { + assertEq(erc721.ownerOf(i), receiver); + } + assertEq(drop.nextIndex(), _nextIndex + quantity); + assertEq(drop.supplyClaimedByWallet(receiver), quantity); + assertEq(drop.availableAmount(), _availableAmount - quantity); + } + + function test_revert_claim_notInAllowlist() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(4)); // generate proof with incorrect amount + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 4); + } + + function test_revert_claim_allowlistedClaimer_proofClaimed() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 2; + + uint256 _availableAmount = drop.availableAmount(); + uint256 _nextIndex = drop.nextIndex(); + + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 5); + + for (uint256 i = 0; i < quantity; i++) { + assertEq(erc721.ownerOf(i), receiver); + } + assertEq(drop.nextIndex(), _nextIndex + quantity); + assertEq(drop.supplyClaimedByWallet(receiver), quantity); + assertEq(drop.availableAmount(), _availableAmount - quantity); + + quantity = 3; + + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 5); + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 5); + } + + function test_state_claim_allowlistedClaimer_invalidQuantity() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 6; + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 5); + } + + function test_state_claim_allowlistedClaimer_airdropExpired() public { + string[] memory inputs = new string[](3); + inputs[0] = "node"; + inputs[1] = "src/test/scripts/getProofAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); -// // Test imports -// import { Wallet } from "../utils/Wallet.sol"; -// import "../utils/BaseTest.sol"; + bytes memory result = vm.ffi(inputs); + bytes32[] memory proofs = abi.decode(result, (bytes32[])); + + vm.warp(1001); + + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); + uint256 quantity = 5; + + vm.prank(receiver); + vm.expectRevert("airdrop expired."); + drop.claim(receiver, quantity, proofs, 5); + } + + /*/////////////////////////////////////////////////////////////// + Unit tests: `claim` -- for open claiming + //////////////////////////////////////////////////////////////*/ + + function test_state_claim_nonAllowlistedClaimer() public { + address receiver = address(0x123); + uint256 quantity = 1; + bytes32[] memory proofs; + + uint256 _availableAmount = drop.availableAmount(); + uint256 _nextIndex = drop.nextIndex(); -// contract AirdropERC721ClaimableTest is BaseTest { -// AirdropERC721Claimable internal drop; + vm.prank(receiver); + drop.claim(receiver, quantity, proofs, 0); -// function setUp() public override { -// super.setUp(); + assertEq(erc721.ownerOf(0), receiver); + assertEq(drop.nextIndex(), _nextIndex + quantity); + assertEq(drop.supplyClaimedByWallet(receiver), quantity); + assertEq(drop.availableAmount(), _availableAmount - quantity); + } + + function test_revert_claim_nonAllowlistedClaimer_invalidQuantity() public { + address receiver = address(0x123); + uint256 quantity = 2; + bytes32[] memory proofs; + + vm.prank(receiver); + vm.expectRevert("invalid quantity."); + drop.claim(receiver, quantity, proofs, 0); + } -// drop = AirdropERC721Claimable(getContract("AirdropERC721Claimable")); - -// erc721.mint(address(airdropTokenOwner), 1000); -// airdropTokenOwner.setApprovalForAllERC721(address(erc721), address(drop), true); -// } - -// /*/////////////////////////////////////////////////////////////// -// Unit tests: `claim` -- for allowlisted claimers -// //////////////////////////////////////////////////////////////*/ - -// function test_state_claim_allowlistedClaimer() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 2; - -// uint256 _availableAmount = drop.availableAmount(); -// uint256 _nextIndex = drop.nextIndex(); - -// vm.prank(receiver); -// drop.claim(receiver, quantity, proofs, 5); - -// for (uint256 i = 0; i < quantity; i++) { -// assertEq(erc721.ownerOf(i), receiver); -// } -// assertEq(drop.nextIndex(), _nextIndex + quantity); -// assertEq(drop.supplyClaimedByWallet(receiver), quantity); -// assertEq(drop.availableAmount(), _availableAmount - quantity); -// } - -// function test_revert_claim_notInAllowlist() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(4); // generate proof with incorrect amount -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 2; - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, proofs, 4); -// } - -// function test_revert_claim_allowlistedClaimer_proofClaimed() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 2; - -// uint256 _availableAmount = drop.availableAmount(); -// uint256 _nextIndex = drop.nextIndex(); - -// vm.prank(receiver); -// drop.claim(receiver, quantity, proofs, 5); - -// for (uint256 i = 0; i < quantity; i++) { -// assertEq(erc721.ownerOf(i), receiver); -// } -// assertEq(drop.nextIndex(), _nextIndex + quantity); -// assertEq(drop.supplyClaimedByWallet(receiver), quantity); -// assertEq(drop.availableAmount(), _availableAmount - quantity); - -// quantity = 3; - -// vm.prank(receiver); -// drop.claim(receiver, quantity, proofs, 5); - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, proofs, 5); -// } - -// function test_state_claim_allowlistedClaimer_invalidQuantity() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 6; - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, proofs, 5); -// } - -// function test_state_claim_allowlistedClaimer_airdropExpired() public { -// string[] memory inputs = new string[](5); -// inputs[0] = "node"; -// inputs[1] = "src/test/scripts/getProof.ts"; -// inputs[2] = Strings.toString(5); -// inputs[3] = "0"; -// inputs[4] = "0x0000000000000000000000000000000000000000"; - -// bytes memory result = vm.ffi(inputs); -// bytes32[] memory proofs = abi.decode(result, (bytes32[])); - -// vm.warp(1001); - -// address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); -// uint256 quantity = 5; - -// vm.prank(receiver); -// vm.expectRevert("airdrop expired."); -// drop.claim(receiver, quantity, proofs, 5); -// } - -// /*/////////////////////////////////////////////////////////////// -// Unit tests: `claim` -- for open claiming -// //////////////////////////////////////////////////////////////*/ - -// function test_state_claim_nonAllowlistedClaimer() public { -// address receiver = address(0x123); -// uint256 quantity = 1; -// bytes32[] memory proofs; - -// uint256 _availableAmount = drop.availableAmount(); -// uint256 _nextIndex = drop.nextIndex(); - -// vm.prank(receiver); -// drop.claim(receiver, quantity, proofs, 0); - -// assertEq(erc721.ownerOf(0), receiver); -// assertEq(drop.nextIndex(), _nextIndex + quantity); -// assertEq(drop.supplyClaimedByWallet(receiver), quantity); -// assertEq(drop.availableAmount(), _availableAmount - quantity); -// } - -// function test_revert_claim_nonAllowlistedClaimer_invalidQuantity() public { -// address receiver = address(0x123); -// uint256 quantity = 2; -// bytes32[] memory proofs; - -// vm.prank(receiver); -// vm.expectRevert("invalid quantity."); -// drop.claim(receiver, quantity, proofs, 0); -// } - -// function test_revert_claim_nonAllowlistedClaimer_exceedsAvailable() public { -// uint256 _availableAmount = drop.availableAmount(); -// bytes32[] memory proofs; - -// uint256 i = 0; -// for (; i < _availableAmount; i++) { -// address receiver = getActor(uint160(i)); -// vm.prank(receiver); -// drop.claim(receiver, 1, proofs, 0); -// } - -// address receiver = getActor(uint160(i)); -// vm.prank(receiver); -// vm.expectRevert("exceeds available tokens."); -// drop.claim(receiver, 1, proofs, 0); -// } -// } + function test_revert_claim_nonAllowlistedClaimer_exceedsAvailable() public { + uint256 _availableAmount = drop.availableAmount(); + bytes32[] memory proofs; + + uint256 i = 0; + for (; i < _availableAmount; i++) { + address receiver = getActor(uint160(i)); + vm.prank(receiver); + drop.claim(receiver, 1, proofs, 0); + } + + address receiver = getActor(uint160(i)); + vm.prank(receiver); + vm.expectRevert("exceeds available tokens."); + drop.claim(receiver, 1, proofs, 0); + } +} diff --git a/src/test/benchmark/AccountBenchmark.t.sol b/src/test/benchmark/AccountBenchmark.t.sol index 356a10d08..6a1db1171 100644 --- a/src/test/benchmark/AccountBenchmark.t.sol +++ b/src/test/benchmark/AccountBenchmark.t.sol @@ -13,6 +13,7 @@ import { UserOperation } from "contracts/prebuilts/account/utils/UserOperation.s import { IAccountPermissions } from "contracts/extension/interface/IAccountPermissions.sol"; import { AccountFactory } from "contracts/prebuilts/account/non-upgradeable/AccountFactory.sol"; import { Account as SimpleAccount } from "contracts/prebuilts/account/non-upgradeable/Account.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; /// @dev This is a dummy contract to test contract interactions with Account. contract Number { @@ -57,11 +58,9 @@ contract AccountBenchmarkTest is BaseTest { event AccountCreated(address indexed account, address indexed accountAdmin); - function _signSignerPermissionRequest(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes memory signature) - { + function _signSignerPermissionRequest( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes memory signature) { bytes32 typehashSignerPermissionRequest = keccak256( "SignerPermissionRequest(address signer,uint8 isAdmin,address[] approvedTargets,uint256 nativeTokenLimitPerTransaction,uint128 permissionStartTimestamp,uint128 permissionEndTimestamp,uint128 reqValidityStartTimestamp,uint128 reqValidityEndTimestamp,bytes32 uid)" ); diff --git a/src/test/benchmark/AirdropERC1155Benchmark.t.sol b/src/test/benchmark/AirdropERC1155Benchmark.t.sol index c409e2f26..389903565 100644 --- a/src/test/benchmark/AirdropERC1155Benchmark.t.sol +++ b/src/test/benchmark/AirdropERC1155Benchmark.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -import "contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol"; +import { AirdropERC1155, IAirdropERC1155 } from "contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol"; // Test imports import { Wallet } from "../utils/Wallet.sol"; diff --git a/src/test/benchmark/DropERC1155Benchmark.t.sol b/src/test/benchmark/DropERC1155Benchmark.t.sol index ab29a6978..59d66441d 100644 --- a/src/test/benchmark/DropERC1155Benchmark.t.sol +++ b/src/test/benchmark/DropERC1155Benchmark.t.sol @@ -4,14 +4,11 @@ pragma solidity ^0.8.0; import { DropERC1155, IPermissions, ILazyMint } from "contracts/prebuilts/drop/DropERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; -import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract DropERC1155BenchmarkTest is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); event TokenURIRevealed(uint256 indexed index, string revealedURI); @@ -61,7 +58,7 @@ contract DropERC1155BenchmarkTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -175,7 +172,7 @@ contract DropERC1155BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](1); // conditions[0].maxClaimableSupply = 500; @@ -218,7 +215,7 @@ contract DropERC1155BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](2); // conditions[0].maxClaimableSupply = 500; @@ -265,7 +262,7 @@ contract DropERC1155BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](3); // conditions[0].maxClaimableSupply = 500; diff --git a/src/test/benchmark/DropERC20Benchmark.t.sol b/src/test/benchmark/DropERC20Benchmark.t.sol index d1be05da4..ee2773371 100644 --- a/src/test/benchmark/DropERC20Benchmark.t.sol +++ b/src/test/benchmark/DropERC20Benchmark.t.sol @@ -4,14 +4,11 @@ pragma solidity ^0.8.0; import { DropERC20 } from "contracts/prebuilts/drop/DropERC20.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; -import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract DropERC20BenchmarkTest is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; DropERC20 public drop; @@ -35,8 +32,8 @@ contract DropERC20BenchmarkTest is BaseTest { inputs[0] = "node"; inputs[1] = "src/test/scripts/generateRoot.ts"; - inputs[2] = Strings.toString(300 ether); - inputs[3] = Strings.toString(1 ether); + inputs[2] = Strings.toString(uint256(300 ether)); + inputs[3] = Strings.toString(uint256(1 ether)); inputs[4] = Strings.toHexString(uint160(address(erc20))); // address of erc20 bytes memory result = vm.ffi(inputs); @@ -89,8 +86,8 @@ contract DropERC20BenchmarkTest is BaseTest { inputs[0] = "node"; inputs[1] = "src/test/scripts/generateRoot.ts"; - inputs[2] = Strings.toString(300 ether); - inputs[3] = Strings.toString(1 ether); + inputs[2] = Strings.toString(uint256(300 ether)); + inputs[3] = Strings.toString(uint256(1 ether)); inputs[4] = Strings.toHexString(uint160(address(erc20))); // address of erc20 bytes memory result = vm.ffi(inputs); @@ -109,7 +106,7 @@ contract DropERC20BenchmarkTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500 ether; @@ -156,7 +153,7 @@ contract DropERC20BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](1); // conditions[0].maxClaimableSupply = 500 ether; @@ -196,7 +193,7 @@ contract DropERC20BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](2); // conditions[0].maxClaimableSupply = 500 ether; @@ -240,7 +237,7 @@ contract DropERC20BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](3); // conditions[0].maxClaimableSupply = 500 ether; diff --git a/src/test/benchmark/DropERC721Benchmark.t.sol b/src/test/benchmark/DropERC721Benchmark.t.sol index ecb8c4805..b46eafed6 100644 --- a/src/test/benchmark/DropERC721Benchmark.t.sol +++ b/src/test/benchmark/DropERC721Benchmark.t.sol @@ -4,15 +4,12 @@ pragma solidity ^0.8.0; import { DropERC721, IDelayedReveal, ERC721AUpgradeable, IPermissions, ILazyMint } from "contracts/prebuilts/drop/DropERC721.sol"; // Test imports -import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; +import { IERC721AUpgradeable } from "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; import "../utils/BaseTest.sol"; -import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract DropERC721BenchmarkTest is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; DropERC721 public drop; @@ -58,7 +55,7 @@ contract DropERC721BenchmarkTest is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -200,7 +197,7 @@ contract DropERC721BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); // conditions[0].maxClaimableSupply = 500; @@ -251,7 +248,7 @@ contract DropERC721BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); // conditions[0].maxClaimableSupply = 500; @@ -302,7 +299,7 @@ contract DropERC721BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); // conditions[0].maxClaimableSupply = 500; @@ -353,7 +350,7 @@ contract DropERC721BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); // conditions[0].maxClaimableSupply = 500; @@ -393,7 +390,7 @@ contract DropERC721BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](2); // conditions[0].maxClaimableSupply = 500; @@ -437,7 +434,7 @@ contract DropERC721BenchmarkTest is BaseTest { // vm.warp(1); - // address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + // address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist // DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](3); // conditions[0].maxClaimableSupply = 500; diff --git a/src/test/benchmark/EditionStakeBenchmark.t.sol b/src/test/benchmark/EditionStakeBenchmark.t.sol index aa9d76218..f8b604dc4 100644 --- a/src/test/benchmark/EditionStakeBenchmark.t.sol +++ b/src/test/benchmark/EditionStakeBenchmark.t.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.0; import { EditionStake } from "contracts/prebuilts/staking/EditionStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; contract EditionStakeBenchmarkTest is BaseTest { diff --git a/src/test/benchmark/MultiwrapBenchmark.t.sol b/src/test/benchmark/MultiwrapBenchmark.t.sol index ca3c649f7..aef57eccc 100644 --- a/src/test/benchmark/MultiwrapBenchmark.t.sol +++ b/src/test/benchmark/MultiwrapBenchmark.t.sol @@ -5,7 +5,6 @@ import { Multiwrap } from "contracts/prebuilts/multiwrap/Multiwrap.sol"; import { ITokenBundle } from "contracts/extension/interface/ITokenBundle.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import { MockERC20 } from "../mocks/MockERC20.sol"; import { Wallet } from "../utils/Wallet.sol"; import "../utils/BaseTest.sol"; diff --git a/src/test/benchmark/NFTStakeBenchmark.t.sol b/src/test/benchmark/NFTStakeBenchmark.t.sol index d8b5fe5f6..0f81eef3d 100644 --- a/src/test/benchmark/NFTStakeBenchmark.t.sol +++ b/src/test/benchmark/NFTStakeBenchmark.t.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.0; import { NFTStake } from "contracts/prebuilts/staking/NFTStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; contract NFTStakeBenchmarkTest is BaseTest { diff --git a/src/test/benchmark/SignatureDropBenchmark.t.sol b/src/test/benchmark/SignatureDropBenchmark.t.sol index 31bfa24de..5e5a4ef51 100644 --- a/src/test/benchmark/SignatureDropBenchmark.t.sol +++ b/src/test/benchmark/SignatureDropBenchmark.t.sol @@ -5,14 +5,11 @@ import { SignatureDrop, IDropSinglePhase, IDelayedReveal, ISignatureMintERC721, // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; -import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract SignatureDropBenchmarkTest is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); event TokenURIRevealed(uint256 indexed index, string revealedURI); diff --git a/src/test/benchmark/TokenERC1155Benchmark.t.sol b/src/test/benchmark/TokenERC1155Benchmark.t.sol index 47438f721..4cd2563d0 100644 --- a/src/test/benchmark/TokenERC1155Benchmark.t.sol +++ b/src/test/benchmark/TokenERC1155Benchmark.t.sol @@ -4,13 +4,11 @@ pragma solidity ^0.8.0; import { TokenERC1155, IPlatformFee } from "contracts/prebuilts/token/TokenERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract TokenERC1155BenchmarkTest is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event TokensMinted(address indexed mintedTo, uint256 indexed tokenIdMinted, string uri, uint256 quantityMinted); event TokensMintedWithSignature( @@ -83,11 +81,10 @@ contract TokenERC1155BenchmarkTest is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(TokenERC1155.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC1155.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = bytes.concat( abi.encode( typehashMintRequest, diff --git a/src/test/benchmark/TokenERC20Benchmark.t.sol b/src/test/benchmark/TokenERC20Benchmark.t.sol index 1932647f0..6b93bb25a 100644 --- a/src/test/benchmark/TokenERC20Benchmark.t.sol +++ b/src/test/benchmark/TokenERC20Benchmark.t.sol @@ -4,13 +4,11 @@ pragma solidity ^0.8.0; import { TokenERC20 } from "contracts/prebuilts/token/TokenERC20.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract TokenERC20BenchmarkTest is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event TokensMinted(address indexed mintedTo, uint256 quantityMinted); event TokensMintedWithSignature( @@ -80,11 +78,10 @@ contract TokenERC20BenchmarkTest is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(TokenERC20.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC20.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/benchmark/TokenERC721Benchmark.t.sol b/src/test/benchmark/TokenERC721Benchmark.t.sol index 1408c4221..410709462 100644 --- a/src/test/benchmark/TokenERC721Benchmark.t.sol +++ b/src/test/benchmark/TokenERC721Benchmark.t.sol @@ -4,13 +4,11 @@ pragma solidity ^0.8.0; import { TokenERC721 } from "contracts/prebuilts/token/TokenERC721.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract TokenERC721BenchmarkTest is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event TokensMinted(address indexed mintedTo, uint256 indexed tokenIdMinted, string uri); event TokensMintedWithSignature( @@ -81,11 +79,10 @@ contract TokenERC721BenchmarkTest is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(TokenERC721.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC721.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/benchmark/TokenStakeBenchmark.t.sol b/src/test/benchmark/TokenStakeBenchmark.t.sol index 1f90676ab..5f639614e 100644 --- a/src/test/benchmark/TokenStakeBenchmark.t.sol +++ b/src/test/benchmark/TokenStakeBenchmark.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { TokenStake } from "contracts/prebuilts/staking/TokenStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract TokenStakeBenchmarkTest is BaseTest { diff --git a/src/test/burn-to-claim-drop-BTT/BurnToClaimDropERC721.t.sol b/src/test/burn-to-claim-drop-BTT/BurnToClaimDropERC721.t.sol index e3ee1953a..bb294e413 100644 --- a/src/test/burn-to-claim-drop-BTT/BurnToClaimDropERC721.t.sol +++ b/src/test/burn-to-claim-drop-BTT/BurnToClaimDropERC721.t.sol @@ -14,12 +14,13 @@ import "@thirdweb-dev/dynamic-contracts/src/interface/IExtension.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports +import { Permissions } from "contracts/extension/Permissions.sol"; +import { PermissionsEnumerable } from "contracts/extension/PermissionsEnumerable.sol"; import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; contract BurnToClaimDropERC721Test is BaseTest, IExtension { - using TWStrings for uint256; - using TWStrings for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); event TokenURIRevealed(uint256 indexed index, string revealedURI); @@ -249,9 +250,9 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -269,9 +270,9 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -1002,7 +1003,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1052,7 +1053,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1111,7 +1112,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1166,7 +1167,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1222,7 +1223,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); @@ -1873,9 +1874,9 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(deployer), 20), + Strings.toHexString(uint160(deployer), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("EXTENSION_ROLE")), 32) + Strings.toHexString(uint256(keccak256("EXTENSION_ROLE")), 32) ) ); Permissions(address(drop)).grantRole(keccak256("EXTENSION_ROLE"), address(0x12345)); diff --git a/src/test/burn-to-claim-drop-BTT/logic/burn-and-claim/burnAndClaim.t.sol b/src/test/burn-to-claim-drop-BTT/logic/burn-and-claim/burnAndClaim.t.sol index 3f3ef7600..eb188e56a 100644 --- a/src/test/burn-to-claim-drop-BTT/logic/burn-and-claim/burnAndClaim.t.sol +++ b/src/test/burn-to-claim-drop-BTT/logic/burn-and-claim/burnAndClaim.t.sol @@ -14,12 +14,12 @@ import "@thirdweb-dev/dynamic-contracts/src/interface/IExtension.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports +import { Permissions } from "contracts/extension/Permissions.sol"; import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; contract BurnToClaimDropERC721Logic_BurnAndClaim is BaseTest, IExtension { - using TWStrings for uint256; - using TWStrings for address; + using Strings for uint256; + using Strings for address; event TokensBurnedAndClaimed( address indexed originContract, diff --git a/src/test/burn-to-claim-drop-BTT/logic/lazy-mint/lazyMint.t.sol b/src/test/burn-to-claim-drop-BTT/logic/lazy-mint/lazyMint.t.sol index 09b0aa75b..e9b19f812 100644 --- a/src/test/burn-to-claim-drop-BTT/logic/lazy-mint/lazyMint.t.sol +++ b/src/test/burn-to-claim-drop-BTT/logic/lazy-mint/lazyMint.t.sol @@ -15,11 +15,11 @@ import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; +import { Permissions } from "contracts/extension/Permissions.sol"; contract BurnToClaimDropERC721Logic_LazyMint is BaseTest, IExtension { - using TWStrings for uint256; - using TWStrings for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); diff --git a/src/test/burn-to-claim-drop-BTT/logic/other-functions/other.t.sol b/src/test/burn-to-claim-drop-BTT/logic/other-functions/other.t.sol index 24ab208e6..0f99059b6 100644 --- a/src/test/burn-to-claim-drop-BTT/logic/other-functions/other.t.sol +++ b/src/test/burn-to-claim-drop-BTT/logic/other-functions/other.t.sol @@ -13,6 +13,7 @@ import { ERC721AStorage } from "contracts/extension/upgradeable/init/ERC721AInit import "@thirdweb-dev/dynamic-contracts/src/interface/IExtension.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; +import { Permissions } from "contracts/extension/Permissions.sol"; contract MyBurnToClaimDrop721Logic is BurnToClaimDrop721Logic { function canSetPlatformFeeInfo() external view returns (bool) { @@ -47,12 +48,7 @@ contract MyBurnToClaimDrop721Logic is BurnToClaimDrop721Logic { return _canSetBurnToClaim(); } - function beforeTokenTransfers( - address from, - address to, - uint256 startTokenId, - uint256 quantity - ) external { + function beforeTokenTransfers(address from, address to, uint256 startTokenId, uint256 quantity) external { _beforeTokenTransfers(from, to, startTokenId, quantity); } diff --git a/src/test/burn-to-claim-drop-BTT/logic/reveal/reveal.t.sol b/src/test/burn-to-claim-drop-BTT/logic/reveal/reveal.t.sol index b8936f541..f60d11351 100644 --- a/src/test/burn-to-claim-drop-BTT/logic/reveal/reveal.t.sol +++ b/src/test/burn-to-claim-drop-BTT/logic/reveal/reveal.t.sol @@ -15,11 +15,10 @@ import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; contract BurnToClaimDropERC721Logic_Reveal is BaseTest, IExtension { - using TWStrings for uint256; - using TWStrings for address; + using Strings for uint256; + using Strings for address; event TokenURIRevealed(uint256 indexed index, string revealedURI); diff --git a/src/test/burn-to-claim-drop/BurnToClaimDropERC721.t.sol b/src/test/burn-to-claim-drop/BurnToClaimDropERC721.t.sol index e3ee1953a..036cd243f 100644 --- a/src/test/burn-to-claim-drop/BurnToClaimDropERC721.t.sol +++ b/src/test/burn-to-claim-drop/BurnToClaimDropERC721.t.sol @@ -15,11 +15,10 @@ import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; contract BurnToClaimDropERC721Test is BaseTest, IExtension { - using TWStrings for uint256; - using TWStrings for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); event TokenURIRevealed(uint256 indexed index, string revealedURI); @@ -249,9 +248,9 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -269,9 +268,9 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -1002,7 +1001,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1052,7 +1051,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1111,7 +1110,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1166,7 +1165,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist BurnToClaimDrop721Logic.ClaimCondition[] memory conditions = new BurnToClaimDrop721Logic.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1222,7 +1221,7 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); @@ -1873,9 +1872,9 @@ contract BurnToClaimDropERC721Test is BaseTest, IExtension { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(deployer), 20), + Strings.toHexString(uint160(deployer), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("EXTENSION_ROLE")), 32) + Strings.toHexString(uint256(keccak256("EXTENSION_ROLE")), 32) ) ); Permissions(address(drop)).grantRole(keccak256("EXTENSION_ROLE"), address(0x12345)); diff --git a/src/test/drop/DropERC1155.t.sol b/src/test/drop/DropERC1155.t.sol index 7e83cd78c..8905ab80d 100644 --- a/src/test/drop/DropERC1155.t.sol +++ b/src/test/drop/DropERC1155.t.sol @@ -4,14 +4,13 @@ pragma solidity ^0.8.0; import { DropERC1155, IPermissions, ILazyMint } from "contracts/prebuilts/drop/DropERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract DropERC1155Test is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); event TokenURIRevealed(uint256 indexed index, string revealedURI); @@ -46,9 +45,9 @@ contract DropERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -66,9 +65,9 @@ contract DropERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -529,7 +528,7 @@ contract DropERC1155Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -580,7 +579,7 @@ contract DropERC1155Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -640,7 +639,7 @@ contract DropERC1155Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -696,7 +695,7 @@ contract DropERC1155Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC1155.ClaimCondition[] memory conditions = new DropERC1155.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -753,7 +752,7 @@ contract DropERC1155Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); diff --git a/src/test/drop/DropERC20.t.sol b/src/test/drop/DropERC20.t.sol index f0167c315..bfa52455d 100644 --- a/src/test/drop/DropERC20.t.sol +++ b/src/test/drop/DropERC20.t.sol @@ -4,14 +4,13 @@ pragma solidity ^0.8.0; import { DropERC20 } from "contracts/prebuilts/drop/DropERC20.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract DropERC20Test is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; DropERC20 public drop; @@ -40,9 +39,9 @@ contract DropERC20Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -60,9 +59,9 @@ contract DropERC20Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -363,7 +362,7 @@ contract DropERC20Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -391,8 +390,8 @@ contract DropERC20Test is BaseTest { inputs[0] = "node"; inputs[1] = "src/test/scripts/generateRoot.ts"; - inputs[2] = Strings.toString(300 ether); - inputs[3] = Strings.toString(1 ether); + inputs[2] = Strings.toString(uint256(300 ether)); + inputs[3] = Strings.toString(uint256(1 ether)); inputs[4] = Strings.toHexString(uint160(address(erc20))); // address of erc20 bytes memory result = vm.ffi(inputs); @@ -411,7 +410,7 @@ contract DropERC20Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500 ether; @@ -448,7 +447,7 @@ contract DropERC20Test is BaseTest { inputs[0] = "node"; inputs[1] = "src/test/scripts/generateRoot.ts"; - inputs[2] = Strings.toString(300 ether); + inputs[2] = Strings.toString(uint256(300 ether)); inputs[3] = Strings.toString(type(uint256).max); // this implies that general price is applicable inputs[4] = "0x0000000000000000000000000000000000000000"; @@ -468,7 +467,7 @@ contract DropERC20Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500 ether; @@ -502,7 +501,7 @@ contract DropERC20Test is BaseTest { inputs[0] = "node"; inputs[1] = "src/test/scripts/generateRoot.ts"; inputs[2] = "0"; // this implies that general limit is applicable - inputs[3] = Strings.toString(5 ether); + inputs[3] = Strings.toString(uint256(5 ether)); inputs[4] = "0x0000000000000000000000000000000000000000"; // general currency will be applicable bytes memory result = vm.ffi(inputs); @@ -521,7 +520,7 @@ contract DropERC20Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC20.ClaimCondition[] memory conditions = new DropERC20.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500 ether; @@ -575,7 +574,7 @@ contract DropERC20Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); diff --git a/src/test/drop/DropERC721.t.sol b/src/test/drop/DropERC721.t.sol index 263568553..8be788e05 100644 --- a/src/test/drop/DropERC721.t.sol +++ b/src/test/drop/DropERC721.t.sol @@ -5,14 +5,13 @@ import { DropERC721, IDelayedReveal, ERC721AUpgradeable, IPermissions, ILazyMint // Test imports import "erc721a-upgradeable/contracts/IERC721AUpgradeable.sol"; -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract DropERC721Test is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI); event TokenURIRevealed(uint256 indexed index, string revealedURI); @@ -47,9 +46,9 @@ contract DropERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -67,9 +66,9 @@ contract DropERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(target), 20), + Strings.toHexString(uint160(target), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); @@ -529,9 +528,9 @@ contract DropERC721Test is BaseTest { bytes memory errorMessage = abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(address(this)), 20), + Strings.toHexString(uint160(address(this)), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("METADATA_ROLE")), 32) + Strings.toHexString(uint256(keccak256("METADATA_ROLE")), 32) ); vm.expectRevert(errorMessage); @@ -816,7 +815,7 @@ contract DropERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -866,7 +865,7 @@ contract DropERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -925,7 +924,7 @@ contract DropERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -980,7 +979,7 @@ contract DropERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; @@ -1036,7 +1035,7 @@ contract DropERC721Test is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); diff --git a/src/test/drop/drop-erc1155/freezeBatchBaseURI/freezeBatchBaseURI.t.sol b/src/test/drop/drop-erc1155/freezeBatchBaseURI/freezeBatchBaseURI.t.sol index cf5e50710..6a54d0d3d 100644 --- a/src/test/drop/drop-erc1155/freezeBatchBaseURI/freezeBatchBaseURI.t.sol +++ b/src/test/drop/drop-erc1155/freezeBatchBaseURI/freezeBatchBaseURI.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { DropERC1155 } from "contracts/prebuilts/drop/DropERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "../../../../../lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol"; @@ -53,9 +53,9 @@ contract DropERC1155Test_freezeBatchBaseURI is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.freezeBatchBaseURI(0); diff --git a/src/test/drop/drop-erc1155/miscellaneous/miscellaneous.t.sol b/src/test/drop/drop-erc1155/miscellaneous/miscellaneous.t.sol index 018bbe081..661c0e3db 100644 --- a/src/test/drop/drop-erc1155/miscellaneous/miscellaneous.t.sol +++ b/src/test/drop/drop-erc1155/miscellaneous/miscellaneous.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { DropERC1155 } from "contracts/prebuilts/drop/DropERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "../../../../../lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol"; import "../../../../../lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1155Upgradeable.sol"; diff --git a/src/test/drop/drop-erc1155/setMaxTotalSupply/setMaxTotalSupply.t.sol b/src/test/drop/drop-erc1155/setMaxTotalSupply/setMaxTotalSupply.t.sol index ef9b3e158..8b694d0b0 100644 --- a/src/test/drop/drop-erc1155/setMaxTotalSupply/setMaxTotalSupply.t.sol +++ b/src/test/drop/drop-erc1155/setMaxTotalSupply/setMaxTotalSupply.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { DropERC1155 } from "contracts/prebuilts/drop/DropERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "../../../../../lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol"; @@ -42,9 +42,9 @@ contract DropERC1155Test_setMaxTotalSupply is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.setMaxTotalSupply(0, newMaxSupply); diff --git a/src/test/drop/drop-erc1155/setSaleRecipientForToken/setSaleRecipientForToken.t.sol b/src/test/drop/drop-erc1155/setSaleRecipientForToken/setSaleRecipientForToken.t.sol index 9c2ae4f51..7c3ce82ae 100644 --- a/src/test/drop/drop-erc1155/setSaleRecipientForToken/setSaleRecipientForToken.t.sol +++ b/src/test/drop/drop-erc1155/setSaleRecipientForToken/setSaleRecipientForToken.t.sol @@ -4,13 +4,13 @@ pragma solidity ^0.8.0; import { DropERC1155 } from "contracts/prebuilts/drop/DropERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "../../../../../lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; contract DropERC1155Test_setSaleRecipientForToken is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; DropERC1155 public drop; @@ -43,9 +43,9 @@ contract DropERC1155Test_setSaleRecipientForToken is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.setSaleRecipientForToken(0, recipient); diff --git a/src/test/drop/drop-erc1155/transferTokensOnClaim/transferTokensOnClaim.t.sol b/src/test/drop/drop-erc1155/transferTokensOnClaim/transferTokensOnClaim.t.sol index fe68daf78..411206cc5 100644 --- a/src/test/drop/drop-erc1155/transferTokensOnClaim/transferTokensOnClaim.t.sol +++ b/src/test/drop/drop-erc1155/transferTokensOnClaim/transferTokensOnClaim.t.sol @@ -5,28 +5,18 @@ import { DropERC1155 } from "contracts/prebuilts/drop/DropERC1155.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; contract HarnessDropERC1155 is DropERC1155 { - function transferTokensOnClaimHarness( - address to, - uint256 _tokenId, - uint256 _quantityBeingClaimed - ) external { + function transferTokensOnClaimHarness(address to, uint256 _tokenId, uint256 _quantityBeingClaimed) external { transferTokensOnClaim(to, _tokenId, _quantityBeingClaimed); } } contract MockERC1155Receiver { - function onERC1155Received( - address, - address, - uint256, - uint256, - bytes memory - ) external pure returns (bytes4) { + function onERC1155Received(address, address, uint256, uint256, bytes memory) external pure returns (bytes4) { return this.onERC1155Received.selector; } @@ -44,8 +34,8 @@ contract MockERC1155Receiver { contract MockERC11555NotReceiver {} contract DropERC1155Test_transferTokensOnClaim is BaseTest { - using StringsUpgradeable for uint256; - using StringsUpgradeable for address; + using Strings for uint256; + using Strings for address; address private to; MockERC1155Receiver private receiver; @@ -103,7 +93,7 @@ contract DropERC1155Test_transferTokensOnClaim is BaseTest { * note: Tests whether contract reverts when a non-holder renounces a role. */ function test_revert_ContractNotERC155Receiver() public toNotReceiever { - vm.expectRevert("ERC1155: transfer to non ERC1155Receiver implementer"); + vm.expectRevert("ERC1155: transfer to non-ERC1155Receiver implementer"); proxy.transferTokensOnClaimHarness(to, 0, 1); } diff --git a/src/test/drop/drop-erc1155/updateBatchBaseURI/updateBatchBaseURI.t.sol b/src/test/drop/drop-erc1155/updateBatchBaseURI/updateBatchBaseURI.t.sol index 290f6819b..c96599065 100644 --- a/src/test/drop/drop-erc1155/updateBatchBaseURI/updateBatchBaseURI.t.sol +++ b/src/test/drop/drop-erc1155/updateBatchBaseURI/updateBatchBaseURI.t.sol @@ -4,13 +4,13 @@ pragma solidity ^0.8.0; import { DropERC1155 } from "contracts/prebuilts/drop/DropERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "../../../../../lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; contract DropERC1155Test_updateBatchBaseURI is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event MetadataFrozen(); @@ -65,9 +65,9 @@ contract DropERC1155Test_updateBatchBaseURI is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.updateBatchBaseURI(0, updatedBaseURI); diff --git a/src/test/drop/drop-erc20/miscellaneous/miscellaneous.t.sol b/src/test/drop/drop-erc20/miscellaneous/miscellaneous.t.sol index c484a97b8..0845465ff 100644 --- a/src/test/drop/drop-erc20/miscellaneous/miscellaneous.t.sol +++ b/src/test/drop/drop-erc20/miscellaneous/miscellaneous.t.sol @@ -18,11 +18,7 @@ contract HarnessDropERC20Misc is DropERC20 { return _transferTokensOnClaim(_to, _quantityBeingClaimed); } - function beforeTokenTransfer( - address from, - address to, - uint256 amount - ) public { + function beforeTokenTransfer(address from, address to, uint256 amount) public { _beforeTokenTransfer(from, to, amount); } diff --git a/src/test/drop/drop-erc20/setMaxTotalSupply/setMaxTotalSupply.t.sol b/src/test/drop/drop-erc20/setMaxTotalSupply/setMaxTotalSupply.t.sol index 1f99ef019..88c338e36 100644 --- a/src/test/drop/drop-erc20/setMaxTotalSupply/setMaxTotalSupply.t.sol +++ b/src/test/drop/drop-erc20/setMaxTotalSupply/setMaxTotalSupply.t.sol @@ -31,9 +31,9 @@ contract DropERC20Test_setMaxTotalSupply is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(address(this)), 20), + Strings.toHexString(uint160(address(this)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.setMaxTotalSupply(0); diff --git a/src/test/drop/drop-erc721/_beforeClaim/_beforeClaim.t.sol b/src/test/drop/drop-erc721/_beforeClaim/_beforeClaim.t.sol index 6495e8dc2..f30885a51 100644 --- a/src/test/drop/drop-erc721/_beforeClaim/_beforeClaim.t.sol +++ b/src/test/drop/drop-erc721/_beforeClaim/_beforeClaim.t.sol @@ -14,7 +14,7 @@ contract DropERC721Test_beforeClaim is BaseTest { bytes private beforeClaim_data; string private beforeClaim_baseURI; uint256 private beforeClaim_amount; - address private receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address private receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); DropERC721.AllowlistProof private alp; diff --git a/src/test/drop/drop-erc721/freezeBatchBaseURI/freezeBatchBaseURI.t.sol b/src/test/drop/drop-erc721/freezeBatchBaseURI/freezeBatchBaseURI.t.sol index 7c527acad..799435fee 100644 --- a/src/test/drop/drop-erc721/freezeBatchBaseURI/freezeBatchBaseURI.t.sol +++ b/src/test/drop/drop-erc721/freezeBatchBaseURI/freezeBatchBaseURI.t.sol @@ -73,9 +73,9 @@ contract DropERC721Test_freezeBatchBaseURI is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.freezeBatchBaseURI(0); diff --git a/src/test/drop/drop-erc721/miscellaneous/miscellaneous.t.sol b/src/test/drop/drop-erc721/miscellaneous/miscellaneous.t.sol index bb125a688..9ec52d8f8 100644 --- a/src/test/drop/drop-erc721/miscellaneous/miscellaneous.t.sol +++ b/src/test/drop/drop-erc721/miscellaneous/miscellaneous.t.sol @@ -36,13 +36,13 @@ contract DropERC721Test_misc is BaseTest { } modifier callerOwner() { - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); vm.startPrank(receiver); _; } modifier callerApproved() { - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); vm.prank(receiver); drop.setApprovalForAll(deployer, true); vm.startPrank(deployer); @@ -97,7 +97,7 @@ contract DropERC721Test_misc is BaseTest { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); // in allowlist + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // in allowlist DropERC721.ClaimCondition[] memory conditions = new DropERC721.ClaimCondition[](1); conditions[0].maxClaimableSupply = 500; diff --git a/src/test/drop/drop-erc721/reveal/reveal.t.sol b/src/test/drop/drop-erc721/reveal/reveal.t.sol index 64d4347f5..13b53c7ab 100644 --- a/src/test/drop/drop-erc721/reveal/reveal.t.sol +++ b/src/test/drop/drop-erc721/reveal/reveal.t.sol @@ -4,12 +4,12 @@ pragma solidity ^0.8.0; import { DropERC721 } from "contracts/prebuilts/drop/DropERC721.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; contract DropERC721Test_reveal is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event TokenURIRevealed(uint256 indexed index, string revealedURI); @@ -85,9 +85,9 @@ contract DropERC721Test_reveal is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.reveal(reveal_index, reveal_key); diff --git a/src/test/drop/drop-erc721/setMaxTotalSupply/setMaxTotalSupply.t.sol b/src/test/drop/drop-erc721/setMaxTotalSupply/setMaxTotalSupply.t.sol index b87a8db20..4ec6e1e35 100644 --- a/src/test/drop/drop-erc721/setMaxTotalSupply/setMaxTotalSupply.t.sol +++ b/src/test/drop/drop-erc721/setMaxTotalSupply/setMaxTotalSupply.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { DropERC721 } from "contracts/prebuilts/drop/DropERC721.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; contract DropERC721Test_setMaxTotalSupply is BaseTest { @@ -38,9 +38,9 @@ contract DropERC721Test_setMaxTotalSupply is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.setMaxTotalSupply(0); diff --git a/src/test/drop/drop-erc721/updateBatchBaseURI/updateBatchBaseURI.t.sol b/src/test/drop/drop-erc721/updateBatchBaseURI/updateBatchBaseURI.t.sol index a0cbb249d..b50e1b43c 100644 --- a/src/test/drop/drop-erc721/updateBatchBaseURI/updateBatchBaseURI.t.sol +++ b/src/test/drop/drop-erc721/updateBatchBaseURI/updateBatchBaseURI.t.sol @@ -4,12 +4,12 @@ pragma solidity ^0.8.0; import { DropERC721 } from "contracts/prebuilts/drop/DropERC721.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../../../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; contract DropERC721Test_updateBatchBaseURI is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId); @@ -85,9 +85,9 @@ contract DropERC721Test_updateBatchBaseURI is BaseTest { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(unauthorized), 20), + Strings.toHexString(uint160(unauthorized), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); drop.updateBatchBaseURI(0, updateBatch_newBaseURI); diff --git a/src/test/marketplace/EnglishAuctions.t.sol b/src/test/marketplace/EnglishAuctions.t.sol index 8525a275f..ac3a07581 100644 --- a/src/test/marketplace/EnglishAuctions.t.sol +++ b/src/test/marketplace/EnglishAuctions.t.sol @@ -598,7 +598,7 @@ contract MarketplaceEnglishAuctionsTest is BaseTest, IExtension { ); vm.prank(seller); - vm.expectRevert("ERC721: caller is not token owner nor approved"); + vm.expectRevert("ERC721: caller is not token owner or approved"); EnglishAuctionsLogic(marketplace).createAuction(auctionParams); } @@ -2095,12 +2095,7 @@ contract BreitwieserTheCreator is BaseTest, IERC721Receiver, IExtension { address public seller; address public buyer; - function onERC721Received( - address, - address, - uint256, - bytes calldata - ) external pure returns (bytes4) { + function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } diff --git a/src/test/marketplace/english-auctions/_transferAuctionTokens/_transferAuctionTokens.t.sol b/src/test/marketplace/english-auctions/_transferAuctionTokens/_transferAuctionTokens.t.sol index 5b3418335..5c36a091d 100644 --- a/src/test/marketplace/english-auctions/_transferAuctionTokens/_transferAuctionTokens.t.sol +++ b/src/test/marketplace/english-auctions/_transferAuctionTokens/_transferAuctionTokens.t.sol @@ -20,11 +20,7 @@ import "@thirdweb-dev/dynamic-contracts/src/interface/IExtension.sol"; contract MockTransferAuctionTokens is EnglishAuctionsLogic { constructor(address _nativeTokenWrapper) EnglishAuctionsLogic(_nativeTokenWrapper) {} - function transferAuctionTokens( - address _from, - address _to, - Auction memory _auction - ) external { + function transferAuctionTokens(address _from, address _to, Auction memory _auction) external { _transferAuctionTokens(_from, _to, _auction); } } diff --git a/src/test/minimal-factory/MinimalFactory.t.sol b/src/test/minimal-factory/MinimalFactory.t.sol index 3c0340c28..a819ee55b 100644 --- a/src/test/minimal-factory/MinimalFactory.t.sol +++ b/src/test/minimal-factory/MinimalFactory.t.sol @@ -5,7 +5,6 @@ import "contracts/infra/TWMinimalFactory.sol"; import "contracts/infra/TWProxy.sol"; import "@openzeppelin/contracts/proxy/Clones.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; import "../utils/BaseTest.sol"; @@ -21,11 +20,7 @@ contract DummyUpgradeable { contract TWNotMinimalFactory { /// @dev Deploys a proxy that points to the given implementation. - function deployProxyByImplementation( - address _implementation, - bytes memory _data, - bytes32 _salt - ) public { + function deployProxyByImplementation(address _implementation, bytes memory _data, bytes32 _salt) public { address deployedProxy = Clones.cloneDeterministic(_implementation, _salt); if (_data.length > 0) { diff --git a/src/test/mocks/MockContractPublisher.sol b/src/test/mocks/MockContractPublisher.sol index b7ec5282a..3ce6a09f4 100644 --- a/src/test/mocks/MockContractPublisher.sol +++ b/src/test/mocks/MockContractPublisher.sol @@ -7,12 +7,9 @@ import "contracts/infra/interface/IContractPublisher.sol"; // solhint-disable const-name-snakecase contract MockContractPublisher is IContractPublisher { - function getAllPublishedContracts(address) - external - pure - override - returns (CustomContractInstance[] memory published) - { + function getAllPublishedContracts( + address + ) external pure override returns (CustomContractInstance[] memory published) { CustomContractInstance[] memory mocks = new CustomContractInstance[](1); mocks[0] = CustomContractInstance( "MockContract", @@ -24,19 +21,17 @@ contract MockContractPublisher is IContractPublisher { return mocks; } - function getPublishedContractVersions(address, string memory) - external - pure - returns (CustomContractInstance[] memory published) - { + function getPublishedContractVersions( + address, + string memory + ) external pure returns (CustomContractInstance[] memory published) { return new CustomContractInstance[](0); } - function getPublishedContract(address, string memory) - external - pure - returns (CustomContractInstance memory published) - { + function getPublishedContract( + address, + string memory + ) external pure returns (CustomContractInstance memory published) { return CustomContractInstance("", 0, "", "", address(0)); } @@ -57,11 +52,9 @@ contract MockContractPublisher is IContractPublisher { return ""; } - function getPublishedUriFromCompilerUri(string memory) - external - pure - returns (string[] memory publishedMetadataUris) - { + function getPublishedUriFromCompilerUri( + string memory + ) external pure returns (string[] memory publishedMetadataUris) { return new string[](0); } } diff --git a/src/test/mocks/MockERC1155.sol b/src/test/mocks/MockERC1155.sol index 2e26802c0..c1af0dc5a 100644 --- a/src/test/mocks/MockERC1155.sol +++ b/src/test/mocks/MockERC1155.sol @@ -6,11 +6,7 @@ import "@openzeppelin/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser. contract MockERC1155 is ERC1155PresetMinterPauser { constructor() ERC1155PresetMinterPauser("ipfs://BaseURI") {} - function mint( - address to, - uint256 id, - uint256 amount - ) public virtual { + function mint(address to, uint256 id, uint256 amount) public virtual { _mint(to, id, amount, ""); } @@ -18,11 +14,7 @@ contract MockERC1155 is ERC1155PresetMinterPauser { return true; } - function mintBatch( - address to, - uint256[] memory ids, - uint256[] memory amounts - ) public virtual { + function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts) public virtual { require(hasRole(MINTER_ROLE, _msgSender()), "ERC1155PresetMinterPauser: must have minter role to mint"); _mintBatch(to, ids, amounts, ""); diff --git a/src/test/mocks/MockERC1155NonBurnable.sol b/src/test/mocks/MockERC1155NonBurnable.sol index 0e96fda38..dff355c7f 100644 --- a/src/test/mocks/MockERC1155NonBurnable.sol +++ b/src/test/mocks/MockERC1155NonBurnable.sol @@ -6,19 +6,11 @@ import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; contract MockERC1155NonBurnable is ERC1155 { constructor() ERC1155("ipfs://BaseURI") {} - function mint( - address to, - uint256 id, - uint256 amount - ) public virtual { + function mint(address to, uint256 id, uint256 amount) public virtual { _mint(to, id, amount, ""); } - function mintBatch( - address to, - uint256[] memory ids, - uint256[] memory amounts - ) public virtual { + function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts) public virtual { _mintBatch(to, ids, amounts, ""); } diff --git a/src/test/mocks/MockERC20.sol b/src/test/mocks/MockERC20.sol index d895d08e0..6b3a5bb8a 100644 --- a/src/test/mocks/MockERC20.sol +++ b/src/test/mocks/MockERC20.sol @@ -18,11 +18,7 @@ contract MockERC20 is ERC20PresetMinterPauser, ERC20Permit { taxActive = !taxActive; } - function _transfer( - address from, - address to, - uint256 amount - ) internal override { + function _transfer(address from, address to, uint256 amount) internal override { if (taxActive) { uint256 tax = (amount * 10) / 100; amount -= tax; diff --git a/src/test/mocks/MockERC20NonCompliant.sol b/src/test/mocks/MockERC20NonCompliant.sol index 8bc8889b5..0e938b1de 100644 --- a/src/test/mocks/MockERC20NonCompliant.sol +++ b/src/test/mocks/MockERC20NonCompliant.sol @@ -37,21 +37,13 @@ contract MockERC20NonCompliant { } // non-compliant ERC20 as transferFrom doesn't return a bool - function transferFrom( - address from, - address to, - uint256 amount - ) public { + function transferFrom(address from, address to, uint256 amount) public { address spender = msg.sender; _spendAllowance(from, spender, amount); _transfer(from, to, amount); } - function _transfer( - address from, - address to, - uint256 amount - ) internal virtual { + function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); @@ -77,22 +69,14 @@ contract MockERC20NonCompliant { _mint(to, amount); } - function _approve( - address owner, - address spender, - uint256 amount - ) internal virtual { + function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; } - function _spendAllowance( - address owner, - address spender, - uint256 amount - ) internal virtual { + 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"); diff --git a/src/test/open-edition/_beforeTokenTransfers/_beforeTokenTransfers.t.sol b/src/test/open-edition/_beforeTokenTransfers/_beforeTokenTransfers.t.sol index 673899df5..1ed885681 100644 --- a/src/test/open-edition/_beforeTokenTransfers/_beforeTokenTransfers.t.sol +++ b/src/test/open-edition/_beforeTokenTransfers/_beforeTokenTransfers.t.sol @@ -8,12 +8,7 @@ import { TWProxy } from "contracts/infra/TWProxy.sol"; import "src/test/utils/BaseTest.sol"; contract OpenEditionERC721Harness is OpenEditionERC721 { - function beforeTokenTransfers( - address from, - address to, - uint256 startTokenId_, - uint256 quantity - ) public { + function beforeTokenTransfers(address from, address to, uint256 startTokenId_, uint256 quantity) public { _beforeTokenTransfers(from, to, startTokenId_, quantity); } } diff --git a/src/test/open-edition/_transferTokensOnClaim/_transferTokensOnClaim.t.sol b/src/test/open-edition/_transferTokensOnClaim/_transferTokensOnClaim.t.sol index 619f49b77..d0d2f2173 100644 --- a/src/test/open-edition/_transferTokensOnClaim/_transferTokensOnClaim.t.sol +++ b/src/test/open-edition/_transferTokensOnClaim/_transferTokensOnClaim.t.sol @@ -14,12 +14,7 @@ contract OpenEditionERC721Harness is OpenEditionERC721 { } contract MockERC721Receiver { - function onERC721Received( - address, - address, - uint256, - bytes memory - ) external pure returns (bytes4) { + function onERC721Received(address, address, uint256, bytes memory) external pure returns (bytes4) { return this.onERC721Received.selector; } } diff --git a/src/test/open-edition/misc/misc.t.sol b/src/test/open-edition/misc/misc.t.sol index 82943215d..44e6b20cb 100644 --- a/src/test/open-edition/misc/misc.t.sol +++ b/src/test/open-edition/misc/misc.t.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import { IERC721AUpgradeable, OpenEditionERC721, ISharedMetadata } from "contracts/prebuilts/open-edition/OpenEditionERC721.sol"; -import { NFTMetadataRenderer } from "contracts/lib/NFTMetadataRendererLib.sol"; +import { NFTMetadataRenderer } from "contracts/lib/NFTMetadataRenderer.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; // Test imports @@ -22,7 +22,7 @@ contract OpenEditionERC721Test_misc is BaseTest { address private openEditionImpl; address private harnessImpl; - address private receiver = 0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3; + address private receiver = 0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd; ISharedMetadata.SharedMetadataInfo public sharedMetadata; diff --git a/src/test/pack/Pack.t.sol b/src/test/pack/Pack.t.sol index e418e9b7a..94d5a8060 100644 --- a/src/test/pack/Pack.t.sol +++ b/src/test/pack/Pack.t.sol @@ -475,7 +475,7 @@ contract PackTest is BaseTest { address recipient = address(0x123); vm.startPrank(address(tokenOwner)); - vm.expectRevert("ERC721: caller is not token owner nor approved"); + vm.expectRevert("ERC721: caller is not token owner or approved"); pack.createPack(packContents, numOfRewardUnits, packUri, 0, 1, recipient); } @@ -514,7 +514,7 @@ contract PackTest is BaseTest { address recipient = address(0x123); vm.startPrank(address(tokenOwner)); - vm.expectRevert("ERC721: caller is not token owner nor approved"); + vm.expectRevert("ERC721: caller is not token owner or approved"); pack.createPack(packContents, numOfRewardUnits, packUri, 0, 1, recipient); } @@ -527,7 +527,7 @@ contract PackTest is BaseTest { address recipient = address(0x123); vm.startPrank(address(tokenOwner)); - vm.expectRevert("ERC1155: caller is not token owner nor approved"); + vm.expectRevert("ERC1155: caller is not token owner or approved"); pack.createPack(packContents, numOfRewardUnits, packUri, 0, 1, recipient); } @@ -1069,10 +1069,9 @@ contract PackTest is BaseTest { uint256 internal constant MAX_TOKENS = 2000; - function getTokensToPack(uint256 len) - internal - returns (ITokenBundle.Token[] memory tokensToPack, uint256[] memory rewardUnits) - { + function getTokensToPack( + uint256 len + ) internal returns (ITokenBundle.Token[] memory tokensToPack, uint256[] memory rewardUnits) { vm.assume(len < MAX_TOKENS); tokensToPack = new ITokenBundle.Token[](len); rewardUnits = new uint256[](len); @@ -1125,15 +1124,13 @@ contract PackTest is BaseTest { } } - function checkBalances(ITokenBundle.Token[] memory rewardUnits, address) + function checkBalances( + ITokenBundle.Token[] memory rewardUnits, + address + ) internal pure - returns ( - uint256 nativeTokenAmount, - uint256 erc20Amount, - uint256[] memory erc1155Amounts, - uint256 erc721Amount - ) + returns (uint256 nativeTokenAmount, uint256 erc20Amount, uint256[] memory erc1155Amounts, uint256 erc721Amount) { erc1155Amounts = new uint256[](MAX_TOKENS); @@ -1251,11 +1248,7 @@ contract MaliciousERC20 is MockERC20, ITokenBundle { pack = Pack(_pack); } - function transferFrom( - address from, - address to, - uint256 amount - ) public override returns (bool) { + function transferFrom(address from, address to, uint256 amount) public override returns (bool) { ITokenBundle.Token[] memory content = new ITokenBundle.Token[](1); uint256[] memory rewards = new uint256[](1); diff --git a/src/test/pack/PackVRFDirect.t.sol b/src/test/pack/PackVRFDirect.t.sol index 178ae2c8c..305378252 100644 --- a/src/test/pack/PackVRFDirect.t.sol +++ b/src/test/pack/PackVRFDirect.t.sol @@ -391,7 +391,7 @@ contract PackVRFDirectTest is BaseTest { address recipient = address(0x123); vm.startPrank(address(tokenOwner)); - vm.expectRevert("ERC721: caller is not token owner nor approved"); + vm.expectRevert("ERC721: caller is not token owner or approved"); pack.createPack(packContents, numOfRewardUnits, packUri, 0, 1, recipient); } @@ -430,7 +430,7 @@ contract PackVRFDirectTest is BaseTest { address recipient = address(0x123); vm.startPrank(address(tokenOwner)); - vm.expectRevert("ERC721: caller is not token owner nor approved"); + vm.expectRevert("ERC721: caller is not token owner or approved"); pack.createPack(packContents, numOfRewardUnits, packUri, 0, 1, recipient); } @@ -443,7 +443,7 @@ contract PackVRFDirectTest is BaseTest { address recipient = address(0x123); vm.startPrank(address(tokenOwner)); - vm.expectRevert("ERC1155: caller is not token owner nor approved"); + vm.expectRevert("ERC1155: caller is not token owner or approved"); pack.createPack(packContents, numOfRewardUnits, packUri, 0, 1, recipient); } @@ -865,10 +865,9 @@ contract PackVRFDirectTest is BaseTest { uint256 internal constant MAX_TOKENS = 2000; - function getTokensToPack(uint256 len) - internal - returns (ITokenBundle.Token[] memory tokensToPack, uint256[] memory rewardUnits) - { + function getTokensToPack( + uint256 len + ) internal returns (ITokenBundle.Token[] memory tokensToPack, uint256[] memory rewardUnits) { vm.assume(len < MAX_TOKENS); tokensToPack = new ITokenBundle.Token[](len); rewardUnits = new uint256[](len); @@ -921,15 +920,13 @@ contract PackVRFDirectTest is BaseTest { } } - function checkBalances(ITokenBundle.Token[] memory rewardUnits, address) + function checkBalances( + ITokenBundle.Token[] memory rewardUnits, + address + ) internal pure - returns ( - uint256 nativeTokenAmount, - uint256 erc20Amount, - uint256[] memory erc1155Amounts, - uint256 erc721Amount - ) + returns (uint256 nativeTokenAmount, uint256 erc20Amount, uint256[] memory erc1155Amounts, uint256 erc721Amount) { erc1155Amounts = new uint256[](MAX_TOKENS); @@ -1047,11 +1044,7 @@ contract MaliciousERC20 is MockERC20, ITokenBundle { pack = Pack(_pack); } - function transferFrom( - address from, - address to, - uint256 amount - ) public override returns (bool) { + function transferFrom(address from, address to, uint256 amount) public override returns (bool) { ITokenBundle.Token[] memory content = new ITokenBundle.Token[](1); uint256[] memory rewards = new uint256[](1); diff --git a/src/test/plugin/Map.t.sol b/src/test/plugin/Map.t.sol index 30ada8330..1888b9841 100644 --- a/src/test/plugin/Map.t.sol +++ b/src/test/plugin/Map.t.sol @@ -1,12 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -import "contracts/extension/plugin/PluginMap.sol"; -import { BaseTest } from "../utils/BaseTest.sol"; -import "contracts/lib/TWStrings.sol"; +import { PluginMap, IPluginMap } from "contracts/extension/plugin/PluginMap.sol"; +import "../utils/BaseTest.sol"; contract MapTest is BaseTest { - using TWStrings for uint256; + using Strings for uint256; PluginMap internal map; address[] private pluginAddresses; diff --git a/src/test/scripts/generateRoot.ts b/src/test/scripts/generateRoot.ts index 8c72fbacf..128499938 100644 --- a/src/test/scripts/generateRoot.ts +++ b/src/test/scripts/generateRoot.ts @@ -1,4 +1,5 @@ -const { MerkleTree } = require("merkletreejs"); +const { MerkleTree } = require("@thirdweb-dev/merkletree"); + const keccak256 = require("keccak256"); const { ethers } = require("ethers"); @@ -6,7 +7,7 @@ const process = require("process"); const members = [ "0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3", - "0xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", + "0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd", "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ]; @@ -15,7 +16,10 @@ let price = process.argv[3]; let currency = process.argv[4]; const hashedLeafs = members.map(l => - ethers.utils.solidityKeccak256(["address", "uint256", "uint256", "address"], [l, val, price, currency]), + ethers.utils.solidityKeccak256( + ["address", "uint256", "uint256", "address"], + [l, val, price, currency], + ), ); const tree = new MerkleTree(hashedLeafs, keccak256, { diff --git a/src/test/scripts/generateRootAirdrop.ts b/src/test/scripts/generateRootAirdrop.ts new file mode 100644 index 000000000..4e2c1fdfb --- /dev/null +++ b/src/test/scripts/generateRootAirdrop.ts @@ -0,0 +1,26 @@ +const { MerkleTree } = require("@thirdweb-dev/merkletree"); + +const keccak256 = require("keccak256"); +const { ethers } = require("ethers"); + +const process = require("process"); + +const members = [ + "0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3", + "0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd", + "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +]; + +let val = process.argv[2]; + +const hashedLeafs = members.map(l => + ethers.utils.solidityKeccak256(["address", "uint256"], [l, val]), +); + +const tree = new MerkleTree(hashedLeafs, keccak256, { + sort: true, + sortLeaves: true, + sortPairs: true, +}); + +process.stdout.write(ethers.utils.defaultAbiCoder.encode(["bytes32"], [tree.getHexRoot()])); diff --git a/src/test/scripts/getCloneAddress.ts b/src/test/scripts/getCloneAddress.ts index d2e1255a2..27ade61fd 100644 --- a/src/test/scripts/getCloneAddress.ts +++ b/src/test/scripts/getCloneAddress.ts @@ -1,4 +1,5 @@ -const { MerkleTree } = require("merkletreejs"); +const { MerkleTree } = require("@thirdweb-dev/merkletree"); + const keccak256 = require("keccak256"); const { ethers } = require("ethers"); diff --git a/src/test/scripts/getProof.ts b/src/test/scripts/getProof.ts index d6c3b96a4..2ef4fd4c5 100644 --- a/src/test/scripts/getProof.ts +++ b/src/test/scripts/getProof.ts @@ -1,4 +1,5 @@ -const { MerkleTree } = require("merkletreejs"); +const { MerkleTree } = require("@thirdweb-dev/merkletree"); + const keccak256 = require("keccak256"); const { ethers } = require("ethers"); @@ -6,7 +7,7 @@ const process = require("process"); const members = [ "0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3", - "0xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", + "0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd", "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ]; @@ -15,7 +16,10 @@ let price = process.argv[3]; let currency = process.argv[4]; const hashedLeafs = members.map(l => - ethers.utils.solidityKeccak256(["address", "uint256", "uint256", "address"], [l, val, price, currency]), + ethers.utils.solidityKeccak256( + ["address", "uint256", "uint256", "address"], + [l, val, price, currency], + ), ); const tree = new MerkleTree(hashedLeafs, keccak256, { @@ -25,7 +29,10 @@ const tree = new MerkleTree(hashedLeafs, keccak256, { }); const expectedProof = tree.getHexProof( - ethers.utils.solidityKeccak256(["address", "uint256", "uint256", "address"], [members[0], val, price, currency]), + ethers.utils.solidityKeccak256( + ["address", "uint256", "uint256", "address"], + [members[1], val, price, currency], + ), ); process.stdout.write(ethers.utils.defaultAbiCoder.encode(["bytes32[]"], [expectedProof])); diff --git a/src/test/scripts/getProofAirdrop.ts b/src/test/scripts/getProofAirdrop.ts new file mode 100644 index 000000000..f99582602 --- /dev/null +++ b/src/test/scripts/getProofAirdrop.ts @@ -0,0 +1,30 @@ +const { MerkleTree } = require("@thirdweb-dev/merkletree"); + +const keccak256 = require("keccak256"); +const { ethers } = require("ethers"); + +const process = require("process"); + +const members = [ + "0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3", + "0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd", + "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +]; + +let val = process.argv[2]; + +const hashedLeafs = members.map(l => + ethers.utils.solidityKeccak256(["address", "uint256"], [l, val]), +); + +const tree = new MerkleTree(hashedLeafs, keccak256, { + sort: true, + sortLeaves: true, + sortPairs: true, +}); + +const expectedProof = tree.getHexProof( + ethers.utils.solidityKeccak256(["address", "uint256"], [members[1], val]), +); + +process.stdout.write(ethers.utils.defaultAbiCoder.encode(["bytes32[]"], [expectedProof])); diff --git a/src/test/sdk/base/BaseUtilTest.sol b/src/test/sdk/base/BaseUtilTest.sol index d2f755ec6..7ae0b458d 100644 --- a/src/test/sdk/base/BaseUtilTest.sol +++ b/src/test/sdk/base/BaseUtilTest.sol @@ -9,7 +9,6 @@ import "../../mocks/MockERC20.sol"; import "../../mocks/MockERC721.sol"; import "../../mocks/MockERC1155.sol"; import "contracts/infra/forwarder/Forwarder.sol"; -import "contracts/lib/TWStrings.sol"; abstract contract BaseUtilTest is DSTest, Test { string public constant NAME = "NAME"; @@ -55,22 +54,14 @@ abstract contract BaseUtilTest is DSTest, Test { wallet = new Wallet(); } - function assertIsOwnerERC721( - address _token, - address _owner, - uint256[] memory _tokenIds - ) internal { + function assertIsOwnerERC721(address _token, address _owner, uint256[] memory _tokenIds) internal { for (uint256 i = 0; i < _tokenIds.length; i += 1) { bool isOwnerOfToken = MockERC721(_token).ownerOf(_tokenIds[i]) == _owner; assertTrue(isOwnerOfToken); } } - function assertIsNotOwnerERC721( - address _token, - address _owner, - uint256[] memory _tokenIds - ) internal { + function assertIsNotOwnerERC721(address _token, address _owner, uint256[] memory _tokenIds) internal { for (uint256 i = 0; i < _tokenIds.length; i += 1) { bool isOwnerOfToken = MockERC721(_token).ownerOf(_tokenIds[i]) == _owner; assertTrue(!isOwnerOfToken); @@ -103,19 +94,11 @@ abstract contract BaseUtilTest is DSTest, Test { } } - function assertBalERC20Eq( - address _token, - address _owner, - uint256 _amount - ) internal { + function assertBalERC20Eq(address _token, address _owner, uint256 _amount) internal { assertEq(MockERC20(_token).balanceOf(_owner), _amount); } - function assertBalERC20Gte( - address _token, - address _owner, - uint256 _amount - ) internal { + function assertBalERC20Gte(address _token, address _owner, uint256 _amount) internal { assertTrue(MockERC20(_token).balanceOf(_owner) >= _amount); } diff --git a/src/test/sdk/base/ERC1155Base.t.sol b/src/test/sdk/base/ERC1155Base.t.sol index c42425292..f6976a3da 100644 --- a/src/test/sdk/base/ERC1155Base.t.sol +++ b/src/test/sdk/base/ERC1155Base.t.sol @@ -5,11 +5,10 @@ import "@std/Test.sol"; import "@ds-test/test.sol"; import { ERC1155Base } from "contracts/base/ERC1155Base.sol"; - -import "contracts/lib/TWStrings.sol"; +import { Strings } from "contracts/lib/Strings.sol"; contract ERC1155BaseTest is DSTest, Test { - using TWStrings for uint256; + using Strings for uint256; // Target contract ERC1155Base internal base; diff --git a/src/test/sdk/base/ERC1155DelayedReveal.t.sol b/src/test/sdk/base/ERC1155DelayedReveal.t.sol index a05ed8e17..ffc0e1a06 100644 --- a/src/test/sdk/base/ERC1155DelayedReveal.t.sol +++ b/src/test/sdk/base/ERC1155DelayedReveal.t.sol @@ -5,11 +5,10 @@ import "@std/Test.sol"; import "@ds-test/test.sol"; import { ERC1155DelayedReveal } from "contracts/base/ERC1155DelayedReveal.sol"; - -import "contracts/lib/TWStrings.sol"; +import { Strings } from "contracts/lib/Strings.sol"; contract ERC1155DelayedRevealTest is DSTest, Test { - using TWStrings for uint256; + using Strings for uint256; // Target contract ERC1155DelayedReveal internal base; diff --git a/src/test/sdk/base/ERC1155Drop.t.sol b/src/test/sdk/base/ERC1155Drop.t.sol index ee1e04b3d..580fe3b77 100644 --- a/src/test/sdk/base/ERC1155Drop.t.sol +++ b/src/test/sdk/base/ERC1155Drop.t.sol @@ -5,11 +5,10 @@ import "@std/Test.sol"; import "@ds-test/test.sol"; import { ERC1155Drop } from "contracts/base/ERC1155Drop.sol"; - -import "contracts/lib/TWStrings.sol"; +import { Strings } from "contracts/lib/Strings.sol"; contract ERC1155DropTest is DSTest, Test { - using TWStrings for uint256; + using Strings for uint256; // Target contract ERC1155Drop internal base; @@ -230,7 +229,7 @@ contract ERC1155DropTest is DSTest, Test { result = vm.ffi(inputs); bytes32[] memory proofs = abi.decode(result, (bytes32[])); - address claimer = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address claimer = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); condition.startTimestamp = block.timestamp; condition.maxClaimableSupply = 100; @@ -288,7 +287,7 @@ contract ERC1155DropTest is DSTest, Test { result = vm.ffi(inputs); bytes32[] memory proofs = abi.decode(result, (bytes32[])); - address claimer = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address claimer = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); condition.startTimestamp = block.timestamp; condition.maxClaimableSupply = 100; diff --git a/src/test/sdk/base/ERC1155LazyMint.t.sol b/src/test/sdk/base/ERC1155LazyMint.t.sol index a6089b684..3d83c1b94 100644 --- a/src/test/sdk/base/ERC1155LazyMint.t.sol +++ b/src/test/sdk/base/ERC1155LazyMint.t.sol @@ -5,11 +5,10 @@ import "@std/Test.sol"; import "@ds-test/test.sol"; import { ERC1155LazyMint } from "contracts/base/ERC1155LazyMint.sol"; - -import "contracts/lib/TWStrings.sol"; +import { Strings } from "contracts/lib/Strings.sol"; contract ERC1155LazyMintTest is DSTest, Test { - using TWStrings for uint256; + using Strings for uint256; // Target contract ERC1155LazyMint internal base; diff --git a/src/test/sdk/base/ERC1155SignatureMint.t.sol b/src/test/sdk/base/ERC1155SignatureMint.t.sol index 6ca3e8a34..77433ba98 100644 --- a/src/test/sdk/base/ERC1155SignatureMint.t.sol +++ b/src/test/sdk/base/ERC1155SignatureMint.t.sol @@ -5,11 +5,10 @@ import "@std/Test.sol"; import "@ds-test/test.sol"; import { ERC1155SignatureMint } from "contracts/base/ERC1155SignatureMint.sol"; - -import "contracts/lib/TWStrings.sol"; +import { Strings } from "contracts/lib/Strings.sol"; contract ERC1155SignatureMintTest is DSTest, Test { - using TWStrings for uint256; + using Strings for uint256; // Target contract ERC1155SignatureMint internal base; @@ -30,11 +29,10 @@ contract ERC1155SignatureMintTest is DSTest, Test { ERC1155SignatureMint.MintRequest req; - function signMintRequest(ERC1155SignatureMint.MintRequest memory _request, uint256 privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + ERC1155SignatureMint.MintRequest memory _request, + uint256 privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = bytes.concat( abi.encode( typehashMintRequest, diff --git a/src/test/sdk/base/ERC20Base.t.sol b/src/test/sdk/base/ERC20Base.t.sol index 18eb1d829..ec8131cfd 100644 --- a/src/test/sdk/base/ERC20Base.t.sol +++ b/src/test/sdk/base/ERC20Base.t.sol @@ -9,7 +9,7 @@ import { ERC20Base } from "contracts/base/ERC20Base.sol"; contract BaseERC20BaseTest is BaseUtilTest { ERC20Base internal base; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal permitTypeHash; bytes32 internal permitNameHash; diff --git a/src/test/sdk/base/ERC20Drop.t.sol b/src/test/sdk/base/ERC20Drop.t.sol index 5115d8f50..cb4457298 100644 --- a/src/test/sdk/base/ERC20Drop.t.sol +++ b/src/test/sdk/base/ERC20Drop.t.sol @@ -9,7 +9,7 @@ import { ERC20Drop } from "contracts/base/ERC20Drop.sol"; contract BaseERC20DropTest is BaseUtilTest { ERC20Drop internal base; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal typehashEip712; bytes32 internal domainSeparator; diff --git a/src/test/sdk/base/ERC20DropVote.t.sol b/src/test/sdk/base/ERC20DropVote.t.sol index 7bd1e73ff..fd32af1de 100644 --- a/src/test/sdk/base/ERC20DropVote.t.sol +++ b/src/test/sdk/base/ERC20DropVote.t.sol @@ -9,7 +9,7 @@ import { ERC20DropVote } from "contracts/base/ERC20DropVote.sol"; contract BaseERC20DropVoteTest is BaseUtilTest { ERC20DropVote internal base; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal typehashEip712; bytes32 internal domainSeparator; diff --git a/src/test/sdk/base/ERC20SignatureMint.t.sol b/src/test/sdk/base/ERC20SignatureMint.t.sol index ab5cc9dca..9c4560868 100644 --- a/src/test/sdk/base/ERC20SignatureMint.t.sol +++ b/src/test/sdk/base/ERC20SignatureMint.t.sol @@ -9,7 +9,7 @@ import { ERC20SignatureMint } from "contracts/base/ERC20SignatureMint.sol"; contract BaseERC20SignatureMintTest is BaseUtilTest { ERC20SignatureMint internal base; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal typehashMintRequest; bytes32 internal nameHash; @@ -53,11 +53,10 @@ contract BaseERC20SignatureMintTest is BaseUtilTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(ERC20SignatureMint.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + ERC20SignatureMint.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/sdk/base/ERC20SignatureMintVote.t.sol b/src/test/sdk/base/ERC20SignatureMintVote.t.sol index a919974d4..f705aba8e 100644 --- a/src/test/sdk/base/ERC20SignatureMintVote.t.sol +++ b/src/test/sdk/base/ERC20SignatureMintVote.t.sol @@ -9,7 +9,7 @@ import { ERC20SignatureMintVote } from "contracts/base/ERC20SignatureMintVote.so contract BaseERC20SignatureMintVoteTest is BaseUtilTest { ERC20SignatureMintVote internal base; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal typehashMintRequest; bytes32 internal nameHash; @@ -53,11 +53,10 @@ contract BaseERC20SignatureMintVoteTest is BaseUtilTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(ERC20SignatureMintVote.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + ERC20SignatureMintVote.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/sdk/base/ERC20Vote.t.sol b/src/test/sdk/base/ERC20Vote.t.sol index d4fa83280..ca57c1c76 100644 --- a/src/test/sdk/base/ERC20Vote.t.sol +++ b/src/test/sdk/base/ERC20Vote.t.sol @@ -9,7 +9,7 @@ import { ERC20Vote } from "contracts/base/ERC20Vote.sol"; contract BaseERC20VoteTest is BaseUtilTest { ERC20Vote internal base; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal permitTypeHash; bytes32 internal delegationTypeHash; diff --git a/src/test/sdk/base/ERC721Base.t.sol b/src/test/sdk/base/ERC721Base.t.sol index 85165bc22..7eaf4b2d2 100644 --- a/src/test/sdk/base/ERC721Base.t.sol +++ b/src/test/sdk/base/ERC721Base.t.sol @@ -9,7 +9,7 @@ import { ERC721Base } from "contracts/base/ERC721Base.sol"; contract BaseERC721BaseTest is BaseUtilTest { ERC721Base internal base; - using TWStrings for uint256; + using Strings for uint256; function setUp() public override { vm.prank(deployer); diff --git a/src/test/sdk/base/ERC721DelayedReveal.t.sol b/src/test/sdk/base/ERC721DelayedReveal.t.sol index f21c8b449..89a901357 100644 --- a/src/test/sdk/base/ERC721DelayedReveal.t.sol +++ b/src/test/sdk/base/ERC721DelayedReveal.t.sol @@ -9,7 +9,7 @@ import { ERC721DelayedReveal } from "contracts/base/ERC721DelayedReveal.sol"; contract BaseERC721DelayedRevealTest is BaseUtilTest { ERC721DelayedReveal internal base; - using TWStrings for uint256; + using Strings for uint256; function setUp() public override { vm.prank(deployer); diff --git a/src/test/sdk/base/ERC721Drop.t.sol b/src/test/sdk/base/ERC721Drop.t.sol index d4010e8bd..663485705 100644 --- a/src/test/sdk/base/ERC721Drop.t.sol +++ b/src/test/sdk/base/ERC721Drop.t.sol @@ -9,7 +9,7 @@ import { ERC721Drop } from "contracts/base/ERC721Drop.sol"; contract BaseERC721DropTest is BaseUtilTest { ERC721Drop internal base; - using TWStrings for uint256; + using Strings for uint256; address recipient; diff --git a/src/test/sdk/base/ERC721LazyMint.t.sol b/src/test/sdk/base/ERC721LazyMint.t.sol index 5a10e5a21..241d82116 100644 --- a/src/test/sdk/base/ERC721LazyMint.t.sol +++ b/src/test/sdk/base/ERC721LazyMint.t.sol @@ -9,7 +9,7 @@ import { ERC721LazyMint } from "contracts/base/ERC721LazyMint.sol"; contract BaseERC721LazyMintTest is BaseUtilTest { ERC721LazyMint internal base; - using TWStrings for uint256; + using Strings for uint256; uint256 _amount; string _baseURIForTokens; diff --git a/src/test/sdk/base/ERC721Multiwrap.t.sol b/src/test/sdk/base/ERC721Multiwrap.t.sol index 1b5e0fc30..30e718d23 100644 --- a/src/test/sdk/base/ERC721Multiwrap.t.sol +++ b/src/test/sdk/base/ERC721Multiwrap.t.sol @@ -11,7 +11,7 @@ import { ITokenBundle } from "contracts/extension/interface/ITokenBundle.sol"; contract BaseERC721MultiwrapTest is BaseUtilTest { ERC721Multiwrap internal base; - using TWStrings for uint256; + using Strings for uint256; Wallet internal tokenOwner; string internal uriForWrappedToken; diff --git a/src/test/sdk/base/ERC721SignatureMint.t.sol b/src/test/sdk/base/ERC721SignatureMint.t.sol index fd09a469d..0dad51e65 100644 --- a/src/test/sdk/base/ERC721SignatureMint.t.sol +++ b/src/test/sdk/base/ERC721SignatureMint.t.sol @@ -9,7 +9,7 @@ import { ERC721SignatureMint } from "contracts/base/ERC721SignatureMint.sol"; contract BaseERC721SignatureMintTest is BaseUtilTest { ERC721SignatureMint internal base; - using TWStrings for uint256; + using Strings for uint256; bytes32 internal typehashMintRequest; bytes32 internal nameHash; @@ -56,11 +56,10 @@ contract BaseERC721SignatureMintTest is BaseUtilTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(ERC721SignatureMint.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + ERC721SignatureMint.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/sdk/extension/DropSinglePhase.t.sol b/src/test/sdk/extension/DropSinglePhase.t.sol index f65daebdf..af22ee551 100644 --- a/src/test/sdk/extension/DropSinglePhase.t.sol +++ b/src/test/sdk/extension/DropSinglePhase.t.sol @@ -3,9 +3,9 @@ pragma solidity ^0.8.11; import "@std/Test.sol"; import "@ds-test/test.sol"; +import { Strings } from "contracts/lib/Strings.sol"; import { DropSinglePhase } from "contracts/extension/DropSinglePhase.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract MyDropSinglePhase is DropSinglePhase { bool condition; @@ -25,11 +25,10 @@ contract MyDropSinglePhase is DropSinglePhase { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} } contract ExtensionDropSinglePhase is DSTest, Test { @@ -143,7 +142,7 @@ contract ExtensionDropSinglePhase is DSTest, Test { vm.warp(1); - address receiver = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + address receiver = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // bytes32[] memory proofs = new bytes32[](0); diff --git a/src/test/sdk/extension/DropSinglePhase1155.t.sol b/src/test/sdk/extension/DropSinglePhase1155.t.sol index ee851ed28..dc6e02689 100644 --- a/src/test/sdk/extension/DropSinglePhase1155.t.sol +++ b/src/test/sdk/extension/DropSinglePhase1155.t.sol @@ -24,11 +24,7 @@ contract MyDropSinglePhase1155 is DropSinglePhase1155 { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim( - address _to, - uint256 _tokenId, - uint256 _quantityBeingClaimed - ) internal override {} + function _transferTokensOnClaim(address _to, uint256 _tokenId, uint256 _quantityBeingClaimed) internal override {} } contract ExtensionDropSinglePhase1155 is DSTest, Test { diff --git a/src/test/sdk/extension/ExtensionUtilTest.sol b/src/test/sdk/extension/ExtensionUtilTest.sol index 73d810b5e..694ab6946 100644 --- a/src/test/sdk/extension/ExtensionUtilTest.sol +++ b/src/test/sdk/extension/ExtensionUtilTest.sol @@ -11,7 +11,6 @@ import "../../mocks/MockERC1155.sol"; import { MockERC721NonBurnable } from "../../mocks/MockERC721NonBurnable.sol"; import { MockERC1155NonBurnable } from "../../mocks/MockERC1155NonBurnable.sol"; import "contracts/infra/forwarder/Forwarder.sol"; -import "contracts/lib/TWStrings.sol"; abstract contract ExtensionUtilTest is DSTest, Test { string public constant NAME = "NAME"; @@ -61,22 +60,14 @@ abstract contract ExtensionUtilTest is DSTest, Test { wallet = new Wallet(); } - function assertIsOwnerERC721( - address _token, - address _owner, - uint256[] memory _tokenIds - ) internal { + function assertIsOwnerERC721(address _token, address _owner, uint256[] memory _tokenIds) internal { for (uint256 i = 0; i < _tokenIds.length; i += 1) { bool isOwnerOfToken = MockERC721(_token).ownerOf(_tokenIds[i]) == _owner; assertTrue(isOwnerOfToken); } } - function assertIsNotOwnerERC721( - address _token, - address _owner, - uint256[] memory _tokenIds - ) internal { + function assertIsNotOwnerERC721(address _token, address _owner, uint256[] memory _tokenIds) internal { for (uint256 i = 0; i < _tokenIds.length; i += 1) { bool isOwnerOfToken = MockERC721(_token).ownerOf(_tokenIds[i]) == _owner; assertTrue(!isOwnerOfToken); @@ -109,19 +100,11 @@ abstract contract ExtensionUtilTest is DSTest, Test { } } - function assertBalERC20Eq( - address _token, - address _owner, - uint256 _amount - ) internal { + function assertBalERC20Eq(address _token, address _owner, uint256 _amount) internal { assertEq(MockERC20(_token).balanceOf(_owner), _amount); } - function assertBalERC20Gte( - address _token, - address _owner, - uint256 _amount - ) internal { + function assertBalERC20Gte(address _token, address _owner, uint256 _amount) internal { assertTrue(MockERC20(_token).balanceOf(_owner) >= _amount); } diff --git a/src/test/sdk/extension/Permissions.t.sol b/src/test/sdk/extension/Permissions.t.sol index b77681960..ec4adcab2 100644 --- a/src/test/sdk/extension/Permissions.t.sol +++ b/src/test/sdk/extension/Permissions.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.11; import "@std/Test.sol"; import "@ds-test/test.sol"; -import { Permissions, TWStrings } from "contracts/extension/Permissions.sol"; +import { Permissions, Strings } from "contracts/extension/Permissions.sol"; contract MyPermissions is Permissions { constructor() { @@ -94,9 +94,9 @@ contract ExtensionPermissions is DSTest, Test { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(ext.DEFAULT_ADMIN_ROLE()), 32) + Strings.toHexString(uint256(ext.DEFAULT_ADMIN_ROLE()), 32) ) ); ext.grantRole(keccak256("role"), address(0x1)); @@ -141,9 +141,9 @@ contract ExtensionPermissions is DSTest, Test { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(address(0x345)), 20), + Strings.toHexString(uint160(address(0x345)), 20), " is missing role ", - TWStrings.toHexString(uint256(ext.DEFAULT_ADMIN_ROLE()), 32) + Strings.toHexString(uint256(ext.DEFAULT_ADMIN_ROLE()), 32) ) ); ext.revokeRole(keccak256("role"), address(0x567)); @@ -153,9 +153,9 @@ contract ExtensionPermissions is DSTest, Test { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(address(0x789)), 20), + Strings.toHexString(uint160(address(0x789)), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("role")), 32) + Strings.toHexString(uint256(keccak256("role")), 32) ) ); ext.revokeRole(keccak256("role"), address(0x789)); @@ -192,9 +192,9 @@ contract ExtensionPermissions is DSTest, Test { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(defaultAdmin), 20), + Strings.toHexString(uint160(defaultAdmin), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("role")), 32) + Strings.toHexString(uint256(keccak256("role")), 32) ) ); ext.renounceRole(keccak256("role"), defaultAdmin); @@ -220,9 +220,9 @@ contract ExtensionPermissions is DSTest, Test { vm.expectRevert( abi.encodePacked( "Permissions: account ", - TWStrings.toHexString(uint160(address(0x345)), 20), + Strings.toHexString(uint160(address(0x345)), 20), " is missing role ", - TWStrings.toHexString(uint256(ext.DEFAULT_ADMIN_ROLE()), 32) + Strings.toHexString(uint256(ext.DEFAULT_ADMIN_ROLE()), 32) ) ); ext.checkModifier(); diff --git a/src/test/sdk/extension/PermissionsEnumerable.t.sol b/src/test/sdk/extension/PermissionsEnumerable.t.sol index b724c3efc..5a20187d4 100644 --- a/src/test/sdk/extension/PermissionsEnumerable.t.sol +++ b/src/test/sdk/extension/PermissionsEnumerable.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.11; import "@std/Test.sol"; import "@ds-test/test.sol"; -import { PermissionsEnumerable, TWStrings } from "contracts/extension/PermissionsEnumerable.sol"; +import { PermissionsEnumerable, Strings } from "contracts/extension/PermissionsEnumerable.sol"; contract MyPermissionsEnumerable is PermissionsEnumerable { constructor() { diff --git a/src/test/sdk/extension/SignatureMintERC1155.t.sol b/src/test/sdk/extension/SignatureMintERC1155.t.sol index 081c7c3f2..9de73c188 100644 --- a/src/test/sdk/extension/SignatureMintERC1155.t.sol +++ b/src/test/sdk/extension/SignatureMintERC1155.t.sol @@ -17,11 +17,10 @@ contract MySigMint1155 is SignatureMintERC1155 { return condition; } - function mintWithSignature(MintRequest calldata req, bytes calldata signature) - external - payable - returns (address signer) - { + function mintWithSignature( + MintRequest calldata req, + bytes calldata signature + ) external payable returns (address signer) { if (!_canSignMintRequest(msg.sender)) { revert("not authorized"); } @@ -76,11 +75,10 @@ contract ExtensionSignatureMintERC1155 is DSTest, Test { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(MySigMint1155.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + MySigMint1155.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = bytes.concat( abi.encode( typehashMintRequest, diff --git a/src/test/sdk/extension/SignatureMintERC20.t.sol b/src/test/sdk/extension/SignatureMintERC20.t.sol index 058c7325a..452c28a29 100644 --- a/src/test/sdk/extension/SignatureMintERC20.t.sol +++ b/src/test/sdk/extension/SignatureMintERC20.t.sol @@ -17,11 +17,10 @@ contract MySigMint20 is SignatureMintERC20 { return condition; } - function mintWithSignature(MintRequest calldata req, bytes calldata signature) - external - payable - returns (address signer) - { + function mintWithSignature( + MintRequest calldata req, + bytes calldata signature + ) external payable returns (address signer) { if (!_canSignMintRequest(msg.sender)) { revert("not authorized"); } @@ -72,11 +71,10 @@ contract ExtensionSignatureMintERC20 is DSTest, Test { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(MySigMint20.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + MySigMint20.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/sdk/extension/SignatureMintERC721.t.sol b/src/test/sdk/extension/SignatureMintERC721.t.sol index 767322d23..555c54115 100644 --- a/src/test/sdk/extension/SignatureMintERC721.t.sol +++ b/src/test/sdk/extension/SignatureMintERC721.t.sol @@ -17,11 +17,10 @@ contract MySigMint721 is SignatureMintERC721 { return condition; } - function mintWithSignature(MintRequest calldata req, bytes calldata signature) - external - payable - returns (address signer) - { + function mintWithSignature( + MintRequest calldata req, + bytes calldata signature + ) external payable returns (address signer) { if (!_canSignMintRequest(msg.sender)) { revert("not authorized"); } @@ -75,11 +74,10 @@ contract ExtensionSignatureMintERC721 is DSTest, Test { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(MySigMint721.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + MySigMint721.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/sdk/extension/StakingExtension.t.sol b/src/test/sdk/extension/StakingExtension.t.sol index b7177782c..2805ba210 100644 --- a/src/test/sdk/extension/StakingExtension.t.sol +++ b/src/test/sdk/extension/StakingExtension.t.sol @@ -32,12 +32,7 @@ contract MyStakingContract is ERC20, Staking721, IERC721Receiver { ERC 165 / 721 logic //////////////////////////////////////////////////////////////*/ - function onERC721Received( - address, - address, - uint256, - bytes calldata - ) external view override returns (bytes4) { + function onERC721Received(address, address, uint256, bytes calldata) external view override returns (bytes4) { require(isStaking == 2, "Direct transfer"); return this.onERC721Received.selector; } diff --git a/src/test/sdk/extension/TokenBundle.t.sol b/src/test/sdk/extension/TokenBundle.t.sol index 793e1f145..a357f1b35 100644 --- a/src/test/sdk/extension/TokenBundle.t.sol +++ b/src/test/sdk/extension/TokenBundle.t.sol @@ -24,11 +24,7 @@ contract MyTokenBundle is TokenBundle { _addTokenInBundle(_tokenToBind, _bundleId); } - function updateTokenInBundle( - Token memory _tokenToBind, - uint256 _bundleId, - uint256 _index - ) external { + function updateTokenInBundle(Token memory _tokenToBind, uint256 _bundleId, uint256 _index) external { _updateTokenInBundle(_tokenToBind, _bundleId, _index); } diff --git a/src/test/sdk/extension/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol b/src/test/sdk/extension/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol index c03db391c..e01939b3b 100644 --- a/src/test/sdk/extension/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol +++ b/src/test/sdk/extension/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol @@ -8,11 +8,7 @@ import { BurnToClaim, IBurnToClaim } from "contracts/extension/BurnToClaim.sol"; import "../../ExtensionUtilTest.sol"; contract MyBurnToClaim is BurnToClaim { - function burnTokensOnOrigin( - address _tokenOwner, - uint256 _tokenId, - uint256 _quantity - ) public { + function burnTokensOnOrigin(address _tokenOwner, uint256 _tokenId, uint256 _quantity) public { _burnTokensOnOrigin(_tokenOwner, _tokenId, _quantity); } diff --git a/src/test/sdk/extension/drop/claim/claim.t.sol b/src/test/sdk/extension/drop/claim/claim.t.sol index ecf50fede..c1228add8 100644 --- a/src/test/sdk/extension/drop/claim/claim.t.sol +++ b/src/test/sdk/extension/drop/claim/claim.t.sol @@ -15,11 +15,10 @@ contract MyDrop is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return true; diff --git a/src/test/sdk/extension/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol b/src/test/sdk/extension/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol index 0c74f1390..833e4f4fd 100644 --- a/src/test/sdk/extension/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol +++ b/src/test/sdk/extension/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol @@ -15,11 +15,10 @@ contract MyDrop is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return true; diff --git a/src/test/sdk/extension/drop/set-claim-conditions/setClaimConditions.t.sol b/src/test/sdk/extension/drop/set-claim-conditions/setClaimConditions.t.sol index 11bc71b16..9cd4ca78b 100644 --- a/src/test/sdk/extension/drop/set-claim-conditions/setClaimConditions.t.sol +++ b/src/test/sdk/extension/drop/set-claim-conditions/setClaimConditions.t.sol @@ -21,11 +21,10 @@ contract MyDrop is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return msg.sender == admin; diff --git a/src/test/sdk/extension/drop/verify-claim/verifyClaim.t.sol b/src/test/sdk/extension/drop/verify-claim/verifyClaim.t.sol index 3365d84ac..60d1d03be 100644 --- a/src/test/sdk/extension/drop/verify-claim/verifyClaim.t.sol +++ b/src/test/sdk/extension/drop/verify-claim/verifyClaim.t.sol @@ -15,11 +15,10 @@ contract MyDrop is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return true; @@ -34,11 +33,7 @@ contract MyDrop is Drop { claimCondition.conditions[_conditionId] = condition; } - function setSupplyClaimedByWallet( - uint256 _conditionId, - address _wallet, - uint256 _supplyClaimed - ) public { + function setSupplyClaimedByWallet(uint256 _conditionId, address _wallet, uint256 _supplyClaimed) public { claimCondition.supplyClaimedByWallet[_conditionId][_wallet] = _supplyClaimed; } } @@ -64,7 +59,7 @@ contract Drop_VerifyClaim is ExtensionUtilTest { ext = new MyDrop(); _claimer = getActor(1); - _allowlistClaimer = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + _allowlistClaimer = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // claim condition without allowlist claimCondition = IClaimCondition.ClaimCondition({ diff --git a/src/test/sdk/extension/upgradeable/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol b/src/test/sdk/extension/upgradeable/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol index a3aa6d57c..bc530cd78 100644 --- a/src/test/sdk/extension/upgradeable/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol +++ b/src/test/sdk/extension/upgradeable/burn-to-claim/burn-tokens-on-origin/_burnTokensOnOrigin.t.sol @@ -8,11 +8,7 @@ import { BurnToClaim, IBurnToClaim } from "contracts/extension/upgradeable/BurnT import "../../../ExtensionUtilTest.sol"; contract MyBurnToClaimUpg is BurnToClaim { - function burnTokensOnOrigin( - address _tokenOwner, - uint256 _tokenId, - uint256 _quantity - ) public { + function burnTokensOnOrigin(address _tokenOwner, uint256 _tokenId, uint256 _quantity) public { _burnTokensOnOrigin(_tokenOwner, _tokenId, _quantity); } diff --git a/src/test/sdk/extension/upgradeable/drop/claim/claim.t.sol b/src/test/sdk/extension/upgradeable/drop/claim/claim.t.sol index 3424f40e0..ca65c8830 100644 --- a/src/test/sdk/extension/upgradeable/drop/claim/claim.t.sol +++ b/src/test/sdk/extension/upgradeable/drop/claim/claim.t.sol @@ -15,11 +15,10 @@ contract MyDropUpg is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return true; diff --git a/src/test/sdk/extension/upgradeable/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol b/src/test/sdk/extension/upgradeable/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol index 5354cef86..3fdd2dce2 100644 --- a/src/test/sdk/extension/upgradeable/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol +++ b/src/test/sdk/extension/upgradeable/drop/get-active-claim-condition-id/getActiveClaimConditionId.t.sol @@ -15,11 +15,10 @@ contract MyDropUpg is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return true; diff --git a/src/test/sdk/extension/upgradeable/drop/set-claim-conditions/setClaimConditions.t.sol b/src/test/sdk/extension/upgradeable/drop/set-claim-conditions/setClaimConditions.t.sol index 179057de2..cd96e3970 100644 --- a/src/test/sdk/extension/upgradeable/drop/set-claim-conditions/setClaimConditions.t.sol +++ b/src/test/sdk/extension/upgradeable/drop/set-claim-conditions/setClaimConditions.t.sol @@ -21,11 +21,10 @@ contract MyDropUpg is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return msg.sender == admin; diff --git a/src/test/sdk/extension/upgradeable/drop/verify-claim/verifyClaim.t.sol b/src/test/sdk/extension/upgradeable/drop/verify-claim/verifyClaim.t.sol index d71395817..3cd3372a1 100644 --- a/src/test/sdk/extension/upgradeable/drop/verify-claim/verifyClaim.t.sol +++ b/src/test/sdk/extension/upgradeable/drop/verify-claim/verifyClaim.t.sol @@ -15,11 +15,10 @@ contract MyDropUpg is Drop { uint256 _pricePerToken ) internal override {} - function _transferTokensOnClaim(address _to, uint256 _quantityBeingClaimed) - internal - override - returns (uint256 startTokenId) - {} + function _transferTokensOnClaim( + address _to, + uint256 _quantityBeingClaimed + ) internal override returns (uint256 startTokenId) {} function _canSetClaimConditions() internal view override returns (bool) { return true; @@ -34,11 +33,7 @@ contract MyDropUpg is Drop { _dropStorage().claimCondition.conditions[_conditionId] = condition; } - function setSupplyClaimedByWallet( - uint256 _conditionId, - address _wallet, - uint256 _supplyClaimed - ) public { + function setSupplyClaimedByWallet(uint256 _conditionId, address _wallet, uint256 _supplyClaimed) public { _dropStorage().claimCondition.supplyClaimedByWallet[_conditionId][_wallet] = _supplyClaimed; } } @@ -64,7 +59,7 @@ contract UpgradeableDrop_VerifyClaim is ExtensionUtilTest { ext = new MyDropUpg(); _claimer = getActor(1); - _allowlistClaimer = address(0x92Bb439374a091c7507bE100183d8D1Ed2c9dAD3); + _allowlistClaimer = address(0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd); // claim condition without allowlist claimCondition = IClaimCondition.ClaimCondition({ diff --git a/src/test/smart-wallet/Account.t.sol b/src/test/smart-wallet/Account.t.sol index d98de9723..799ade4da 100644 --- a/src/test/smart-wallet/Account.t.sol +++ b/src/test/smart-wallet/Account.t.sol @@ -12,6 +12,7 @@ import { UserOperation } from "contracts/prebuilts/account/utils/UserOperation.s import { IAccountPermissions } from "contracts/extension/interface/IAccountPermissions.sol"; import { AccountFactory } from "contracts/prebuilts/account/non-upgradeable/AccountFactory.sol"; import { Account as SimpleAccount } from "contracts/prebuilts/account/non-upgradeable/Account.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; /// @dev This is a dummy contract to test contract interactions with Account. contract Number { @@ -56,11 +57,9 @@ contract SimpleAccountTest is BaseTest { event AccountCreated(address indexed account, address indexed accountAdmin); - function _prepareSignature(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes32 typedDataHash) - { + function _prepareSignature( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes32 typedDataHash) { bytes32 typehashSignerPermissionRequest = keccak256( "SignerPermissionRequest(address signer,uint8 isAdmin,address[] approvedTargets,uint256 nativeTokenLimitPerTransaction,uint128 permissionStartTimestamp,uint128 permissionEndTimestamp,uint128 reqValidityStartTimestamp,uint128 reqValidityEndTimestamp,bytes32 uid)" ); @@ -91,11 +90,9 @@ contract SimpleAccountTest is BaseTest { typedDataHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } - function _signSignerPermissionRequest(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes memory signature) - { + function _signSignerPermissionRequest( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes memory signature) { bytes32 typedDataHash = _prepareSignature(_req); (uint8 v, bytes32 r, bytes32 s) = vm.sign(accountAdminPKey, typedDataHash); signature = abi.encodePacked(r, s, v); diff --git a/src/test/smart-wallet/AccountVulnPOC.t.sol b/src/test/smart-wallet/AccountVulnPOC.t.sol index 9a9faf259..6ffd8b6ad 100644 --- a/src/test/smart-wallet/AccountVulnPOC.t.sol +++ b/src/test/smart-wallet/AccountVulnPOC.t.sol @@ -11,6 +11,7 @@ import { TWProxy } from "contracts/infra/TWProxy.sol"; // Target import { IAccountPermissions } from "contracts/extension/interface/IAccountPermissions.sol"; import { AccountFactory, Account as SimpleAccount } from "contracts/prebuilts/account/non-upgradeable/AccountFactory.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; library GPv2EIP1271 { bytes4 internal constant MAGICVALUE = 0x1626ba7e; @@ -36,11 +37,7 @@ contract Number { num += 1; } - function setNumBySignature( - address owner, - uint256 newNum, - bytes calldata signature - ) public { + function setNumBySignature(address owner, uint256 newNum, bytes calldata signature) public { if (owner.code.length == 0) { // Signature verification by ECDSA } else { @@ -81,11 +78,9 @@ contract SimpleAccountVulnPOCTest is BaseTest { event AccountCreated(address indexed account, address indexed accountAdmin); - function _prepareSignature(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes32 typedDataHash) - { + function _prepareSignature( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes32 typedDataHash) { bytes32 typehashSignerPermissionRequest = keccak256( "SignerPermissionRequest(address signer,uint8 isAdmin,address[] approvedTargets,uint256 nativeTokenLimitPerTransaction,uint128 permissionStartTimestamp,uint128 permissionEndTimestamp,uint128 reqValidityStartTimestamp,uint128 reqValidityEndTimestamp,bytes32 uid)" ); @@ -116,11 +111,9 @@ contract SimpleAccountVulnPOCTest is BaseTest { typedDataHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } - function _signSignerPermissionRequest(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes memory signature) - { + function _signSignerPermissionRequest( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes memory signature) { bytes32 typedDataHash = _prepareSignature(_req); (uint8 v, bytes32 r, bytes32 s) = vm.sign(accountAdminPKey, typedDataHash); signature = abi.encodePacked(r, s, v); diff --git a/src/test/smart-wallet/DynamicAccount.t.sol b/src/test/smart-wallet/DynamicAccount.t.sol index bbf12aa19..5892ac43a 100644 --- a/src/test/smart-wallet/DynamicAccount.t.sol +++ b/src/test/smart-wallet/DynamicAccount.t.sol @@ -15,6 +15,7 @@ import { UserOperation } from "contracts/prebuilts/account/utils/UserOperation.s // Target import { Account as SimpleAccount } from "contracts/prebuilts/account/non-upgradeable/Account.sol"; import { DynamicAccountFactory, DynamicAccount } from "contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; /// @dev This is a dummy contract to test contract interactions with Account. contract Number { @@ -34,12 +35,7 @@ contract Number { } contract NFTRejector { - function onERC721Received( - address, - address, - uint256, - bytes memory - ) public virtual returns (bytes4) { + function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) { revert("NFTs not accepted"); } } @@ -72,11 +68,9 @@ contract DynamicAccountTest is BaseTest { event AccountCreated(address indexed account, address indexed accountAdmin); - function _prepareSignature(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes32 typedDataHash) - { + function _prepareSignature( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes32 typedDataHash) { bytes32 typehashSignerPermissionRequest = keccak256( "SignerPermissionRequest(address signer,uint8 isAdmin,address[] approvedTargets,uint256 nativeTokenLimitPerTransaction,uint128 permissionStartTimestamp,uint128 permissionEndTimestamp,uint128 reqValidityStartTimestamp,uint128 reqValidityEndTimestamp,bytes32 uid)" ); @@ -107,11 +101,9 @@ contract DynamicAccountTest is BaseTest { typedDataHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } - function _signSignerPermissionRequest(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes memory signature) - { + function _signSignerPermissionRequest( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes memory signature) { bytes32 typedDataHash = _prepareSignature(_req); (uint8 v, bytes32 r, bytes32 s) = vm.sign(accountAdminPKey, typedDataHash); signature = abi.encodePacked(r, s, v); diff --git a/src/test/smart-wallet/ManagedAccount.t.sol b/src/test/smart-wallet/ManagedAccount.t.sol index dd53a920f..643f8e1b8 100644 --- a/src/test/smart-wallet/ManagedAccount.t.sol +++ b/src/test/smart-wallet/ManagedAccount.t.sol @@ -15,6 +15,7 @@ import { UserOperation } from "contracts/prebuilts/account/utils/UserOperation.s // Target import { Account as SimpleAccount } from "contracts/prebuilts/account/non-upgradeable/Account.sol"; import { ManagedAccountFactory, ManagedAccount } from "contracts/prebuilts/account/managed/ManagedAccountFactory.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; /// @dev This is a dummy contract to test contract interactions with Account. contract Number { @@ -34,12 +35,7 @@ contract Number { } contract NFTRejector { - function onERC721Received( - address, - address, - uint256, - bytes memory - ) public virtual returns (bytes4) { + function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) { revert("NFTs not accepted"); } } @@ -73,11 +69,9 @@ contract ManagedAccountTest is BaseTest { event AccountCreated(address indexed account, address indexed accountAdmin); - function _prepareSignature(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes32 typedDataHash) - { + function _prepareSignature( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes32 typedDataHash) { bytes32 typehashSignerPermissionRequest = keccak256( "SignerPermissionRequest(address signer,uint8 isAdmin,address[] approvedTargets,uint256 nativeTokenLimitPerTransaction,uint128 permissionStartTimestamp,uint128 permissionEndTimestamp,uint128 reqValidityStartTimestamp,uint128 reqValidityEndTimestamp,bytes32 uid)" ); @@ -108,11 +102,9 @@ contract ManagedAccountTest is BaseTest { typedDataHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } - function _signSignerPermissionRequest(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes memory signature) - { + function _signSignerPermissionRequest( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes memory signature) { bytes32 typedDataHash = _prepareSignature(_req); (uint8 v, bytes32 r, bytes32 s) = vm.sign(accountAdminPKey, typedDataHash); signature = abi.encodePacked(r, s, v); diff --git a/src/test/smart-wallet/account-core/isValidSigner.t.sol b/src/test/smart-wallet/account-core/isValidSigner.t.sol index c289ca237..49ddd39c3 100644 --- a/src/test/smart-wallet/account-core/isValidSigner.t.sol +++ b/src/test/smart-wallet/account-core/isValidSigner.t.sol @@ -35,9 +35,10 @@ contract Number { contract MyDynamicAccount is DynamicAccount { using EnumerableSet for EnumerableSet.AddressSet; - constructor(IEntryPoint _entrypoint, Extension[] memory _defaultExtensions) - DynamicAccount(_entrypoint, _defaultExtensions) - {} + constructor( + IEntryPoint _entrypoint, + Extension[] memory _defaultExtensions + ) DynamicAccount(_entrypoint, _defaultExtensions) {} function setPermissionsForSigner( address _signer, @@ -165,10 +166,10 @@ contract AccountCoreTest_isValidSigner is BaseTest { return _setupUserOp(_signerPKey, _initCode, callDataForEntrypoint); } - function _setupUserOpInvalidFunction(uint256 _signerPKey, bytes memory _initCode) - internal - returns (UserOperation memory) - { + function _setupUserOpInvalidFunction( + uint256 _signerPKey, + bytes memory _initCode + ) internal returns (UserOperation memory) { bytes memory callDataForEntrypoint = abi.encodeWithSignature("invalidFunction()"); return _setupUserOp(_signerPKey, _initCode, callDataForEntrypoint); diff --git a/src/test/smart-wallet/account-permissions/setPermissionsForSigner.t.sol b/src/test/smart-wallet/account-permissions/setPermissionsForSigner.t.sol index 96ef0d462..f2eb8bb28 100644 --- a/src/test/smart-wallet/account-permissions/setPermissionsForSigner.t.sol +++ b/src/test/smart-wallet/account-permissions/setPermissionsForSigner.t.sol @@ -15,6 +15,7 @@ import { UserOperation } from "contracts/prebuilts/account/utils/UserOperation.s // Target import { Account as SimpleAccount } from "contracts/prebuilts/account/non-upgradeable/Account.sol"; import { DynamicAccountFactory, DynamicAccount } from "contracts/prebuilts/account/dynamic/DynamicAccountFactory.sol"; +import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; /// @dev This is a dummy contract to test contract interactions with Account. contract Number { @@ -34,12 +35,7 @@ contract Number { } contract NFTRejector { - function onERC721Received( - address, - address, - uint256, - bytes memory - ) public virtual returns (bytes4) { + function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) { revert("NFTs not accepted"); } } @@ -80,11 +76,9 @@ contract AccountPermissionsTest_setPermissionsForSigner is BaseTest { event AccountCreated(address indexed account, address indexed accountAdmin); - function _prepareSignature(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes32 typedDataHash) - { + function _prepareSignature( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes32 typedDataHash) { bytes32 typehashSignerPermissionRequest = keccak256( "SignerPermissionRequest(address signer,uint8 isAdmin,address[] approvedTargets,uint256 nativeTokenLimitPerTransaction,uint128 permissionStartTimestamp,uint128 permissionEndTimestamp,uint128 reqValidityStartTimestamp,uint128 reqValidityEndTimestamp,bytes32 uid)" ); @@ -115,21 +109,17 @@ contract AccountPermissionsTest_setPermissionsForSigner is BaseTest { typedDataHash = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } - function _signSignerPermissionRequest(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes memory signature) - { + function _signSignerPermissionRequest( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes memory signature) { bytes32 typedDataHash = _prepareSignature(_req); (uint8 v, bytes32 r, bytes32 s) = vm.sign(accountAdminPKey, typedDataHash); signature = abi.encodePacked(r, s, v); } - function _signSignerPermissionRequestInvalid(IAccountPermissions.SignerPermissionRequest memory _req) - internal - view - returns (bytes memory signature) - { + function _signSignerPermissionRequestInvalid( + IAccountPermissions.SignerPermissionRequest memory _req + ) internal view returns (bytes memory signature) { bytes32 typedDataHash = _prepareSignature(_req); (uint8 v, bytes32 r, bytes32 s) = vm.sign(0x111, typedDataHash); signature = abi.encodePacked(r, s, v); diff --git a/src/test/smart-wallet/utils/AABenchmarkArtifacts.sol b/src/test/smart-wallet/utils/AABenchmarkArtifacts.sol index 891c0c1d7..f14427650 100644 --- a/src/test/smart-wallet/utils/AABenchmarkArtifacts.sol +++ b/src/test/smart-wallet/utils/AABenchmarkArtifacts.sol @@ -9,6 +9,6 @@ interface ThirdwebAccount { } address constant THIRDWEB_ACCOUNT_FACTORY_ADDRESS = 0x2e234DAe75C793f67A35089C9d99245E1C58470b; address constant THIRDWEB_ACCOUNT_IMPL_ADDRESS = 0xffD4505B3452Dc22f8473616d50503bA9E1710Ac; -bytes constant THIRDWEB_ACCOUNT_FACTORY_BYTECODE = hex"608060405234801561001057600080fd5b50600436106101285760003560e01c806308e93d0a1461012d5780630b61e12b1461014b5780630e6254fd1461016057806311464fbe14610173578063248a9ca3146101b25780632f2ff15d146101d357806336568abe146101e657806358451f97146101f957806383a03f8c146102015780638878ed33146102145780639010d07c1461022757806391d148541461023a5780639387a3801461025d578063938e3d7b14610270578063a217fddf14610283578063a32fa5b31461028b578063a65d69d41461029e578063ac9650d8146102c5578063c3c5a547146102e5578063ca15c873146102f8578063d547741f1461030b578063d8fd8f441461031e578063e68a7c3b14610331578063e8a3d48514610344575b600080fd5b610135610359565b6040516101429190611978565b60405180910390f35b61015e6101593660046119e1565b61036a565b005b61013561016e366004611a0b565b61040b565b61019a7f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac81565b6040516001600160a01b039091168152602001610142565b6101c56101c0366004611a26565b610435565b604051908152602001610142565b61015e6101e1366004611a3f565b610453565b61015e6101f4366004611a3f565b6104fd565b6101c561055c565b61015e61020f366004611a26565b610568565b61019a610222366004611a6b565b6105b6565b61019a610235366004611aed565b610630565b61024d610248366004611a3f565b61073f565b6040519015158152602001610142565b61015e61026b3660046119e1565b610773565b61015e61027e366004611b25565b61080a565b6101c5600081565b61024d610299366004611a3f565b61085b565b61019a7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278981565b6102d86102d3366004611bd5565b6108be565b6040516101429190611ca1565b61024d6102f3366004611a0b565b6109b2565b6101c5610306366004611a26565b6109be565b61015e610319366004611a3f565b610a5b565b61019a61032c366004611a6b565b610a66565b61013561033f366004611aed565b610bb1565b61034c610ce2565b6040516101429190611d03565b60606103656000610e69565b905090565b336103758183610e76565b61039a5760405162461bcd60e51b815260040161039190611d16565b60405180910390fd5b6001600160a01b03831660009081526002602052604081206103bc9083610eba565b9050801561040557836001600160a01b0316826001600160a01b03167f12146497b3b826918ec47f0cac7272a09ed06b30c16c030e99ec48ff5dd60b4760405160405180910390a35b50505050565b6001600160a01b038116600090815260026020526040902060609061042f90610e69565b92915050565b600061043f610ecf565b600092835260010160205250604090205490565b61047761045e610ecf565b6000848152600191909101602052604090205433610ed9565b61047f610ecf565b6000838152602091825260408082206001600160a01b0385168352909252205460ff16156104ef5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610391565b6104f98282610f5e565b5050565b336001600160a01b038216146105525760405162461bcd60e51b815260206004820152601a60248201527921b0b71037b7363c903932b737bab731b2903337b91039b2b63360311b6044820152606401610391565b6104f98282610f72565b60006103656000610f86565b336105738183610e76565b61058f5760405162461bcd60e51b815260040161039190611d16565b61059a600082610eba565b6104f95760405162461bcd60e51b815260040161039190611d4d565b6000806105f98585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f9092505050565b90506106257f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac82610fc3565b9150505b9392505050565b60008061063b611023565b600085815260209190915260408120549150805b82811015610736576000610661611023565b60008881526020918252604080822085835260010190925220546001600160a01b0316146106da57848214156106c857610699611023565b600087815260209182526040808220938252600190930190915220546001600160a01b0316925061042f915050565b6106d3600183611dad565b9150610724565b6106e586600061073f565b801561071157506106f4611023565b600087815260209182526040808220828052600201909252205481145b1561072457610721600183611dad565b91505b61072f600182611dad565b905061064f565b50505092915050565b6000610749610ecf565b6000938452602090815260408085206001600160a01b039490941685529290525090205460ff1690565b3361077e8183610e76565b61079a5760405162461bcd60e51b815260040161039190611d16565b6001600160a01b03831660009081526002602052604081206107bc908361102d565b9050801561040557836001600160a01b0316826001600160a01b03167f98d1ebbe00ae92a5de96a0f49742a8afa89f42363592bc2e7cfaaed68b45e7a660405160405180910390a350505050565b610812611042565b61084f5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610391565b6108588161104e565b50565b6000610865610ecf565b600084815260209182526040808220828052909252205460ff166108b55761088b610ecf565b6000848152602091825260408082206001600160a01b0386168352909252205460ff16905061042f565b50600192915050565b6060816001600160401b038111156108d8576108d8611b0f565b60405190808252806020026020018201604052801561090b57816020015b60608152602001906001900390816108f65790505b50905060005b828110156109ab5761097b3085858481811061092f5761092f611dc5565b90506020028101906109419190611ddb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061113992505050565b82828151811061098d5761098d611dc5565b602002602001018190525080806109a390611e28565b915050610911565b5092915050565b600061042f818361115e565b6000806109c9611023565b6000848152602091909152604081205491505b81811015610a365760006109ee611023565b60008681526020918252604080822085835260010190925220546001600160a01b031614610a2457610a21600184611dad565b92505b610a2f600182611dad565b90506109dc565b50610a4283600061073f565b15610a5557610a52600183611dad565b91505b50919050565b61055261045e610ecf565b6000807f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac90506000610ace8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f9092505050565b90506000610adc8383610fc3565b90506001600160a01b0381163b15610af8579250610629915050565b610b028383611180565b9050336001600160a01b037f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27891614610b5b57610b3f600082610eba565b610b5b5760405162461bcd60e51b815260040161039190611d4d565b610b6781888888611217565b866001600160a01b0316816001600160a01b03167fac631f3001b55ea1509cf3d7e74898f85392a61a76e8149181ae1259622dabc860405160405180910390a39695505050505050565b60608183108015610bcb5750610bc76000610f86565b8211155b610c235760405162461bcd60e51b815260206004820152602360248201527f426173654163636f756e74466163746f72793a20696e76616c696420696e646960448201526263657360e81b6064820152608401610391565b6000610c2f8484611e43565b9050610c3b8484611e43565b6001600160401b03811115610c5257610c52611b0f565b604051908082528060200260200182016040528015610c7b578160200160208202803683370190505b50915060005b81811015610cda57610c9e610c968683611dad565b60009061127f565b838281518110610cb057610cb0611dc5565b6001600160a01b0390921660209283029190910190910152610cd3600182611dad565b9050610c81565b505092915050565b6060610cec61128b565b8054610cf790611e5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2390611e5a565b8015610d705780601f10610d4557610100808354040283529160200191610d70565b820191906000526020600020905b815481529060010190602001808311610d5357829003601f168201915b5050505050905090565b6001610d84610ecf565b6000848152602091825260408082206001600160a01b0386168084529352808220805460ff1916941515949094179093559151339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b7f0a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e50090565b60008060ff19610e3860017f0c4ba382c0009cf238e4c1ca1a52f51c61e6248a70bdfb34e5ed49d5578a5c0c611e43565b604051602001610e4a91815260200190565b60408051601f1981840301815291905280516020909101201692915050565b60606000610629836112af565b600080610ea37f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac84610fc3565b6001600160a01b0385811691161491505092915050565b6000610629836001600160a01b03841661130b565b6000610365610de3565b610ee1610ecf565b6000838152602091825260408082206001600160a01b0385168352909252205460ff166104f957610f1c816001600160a01b0316601461135a565b610f2783602061135a565b604051602001610f38929190611e8f565b60408051601f198184030181529082905262461bcd60e51b825261039191600401611d03565b610f688282610d7a565b6104f982826114f5565b610f7c82826115b4565b6104f9828261161d565b600061042f825490565b60008282604051602001610fa5929190611efc565b60405160208183030381529060405280519060200120905092915050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c82012060788201526055604390910120600090610629565b6000610365610e07565b6000610629836001600160a01b0384166116ac565b6000610365813361073f565b600061105861128b565b805461106390611e5a565b80601f016020809104026020016040519081016040528092919081815260200182805461108f90611e5a565b80156110dc5780601f106110b1576101008083540402835291602001916110dc565b820191906000526020600020905b8154815290600101906020018083116110bf57829003601f168201915b50505050509050816110ec61128b565b81516110fb92602001906118df565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a16818360405161112d929190611f28565b60405180910390a15050565b60606106298383604051806060016040528060278152602001611ff66027913961179f565b6001600160a01b03811660009081526001830160205260408120541515610629565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661042f5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b6044820152606401610391565b60405163347d5e2560e21b81526001600160a01b0385169063d1f578949061124790869086908690600401611f4d565b600060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b5050505050505050565b6000610629838361187c565b7f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b6060816000018054806020026020016040519081016040528092919081815260200182805480156112ff57602002820191906000526020600020905b8154815260200190600101908083116112eb575b50505050509050919050565b60008181526001830160205260408120546113525750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561042f565b50600061042f565b60606000611369836002611f8d565b611374906002611dad565b6001600160401b0381111561138b5761138b611b0f565b6040519080825280601f01601f1916602001820160405280156113b5576020820181803683370190505b509050600360fc1b816000815181106113d0576113d0611dc5565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113ff576113ff611dc5565b60200101906001600160f81b031916908160001a9053506000611423846002611f8d565b61142e906001611dad565b90505b60018111156114a6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061146257611462611dc5565b1a60f81b82828151811061147857611478611dc5565b60200101906001600160f81b031916908160001a90535060049490941c9361149f81611fac565b9050611431565b5083156106295760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610391565b60006114ff611023565b600084815260209190915260409020549050600161151b611023565b600085815260209190915260408120805490919061153a908490611dad565b90915550829050611549611023565b6000858152602091825260408082208583526001019092522080546001600160a01b0319166001600160a01b039290921691909117905580611589611023565b6000948552602090815260408086206001600160a01b03909516865260029094019052919092205550565b6115be8282610ed9565b6115c6610ecf565b6000838152602091825260408082206001600160a01b0385168084529352808220805460ff191690555133929185917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611627611023565b6000848152602091825260408082206001600160a01b038616835260020190925220549050611654611023565b6000848152602091825260408082208483526001019092522080546001600160a01b0319169055611683611023565b6000938452602090815260408085206001600160a01b0390941685526002909301905250812055565b600081815260018301602052604081205480156117955760006116d0600183611e43565b85549091506000906116e490600190611e43565b905081811461174957600086600001828154811061170457611704611dc5565b906000526020600020015490508087600001848154811061172757611727611dc5565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061175a5761175a611fc3565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061042f565b600091505061042f565b60606001600160a01b0384163b6118075760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610391565b600080856001600160a01b0316856040516118229190611fd9565b600060405180830381855af49150503d806000811461185d576040519150601f19603f3d011682016040523d82523d6000602084013e611862565b606091505b50915091506118728282866118a6565b9695505050505050565b600082600001828154811061189357611893611dc5565b9060005260206000200154905092915050565b606083156118b5575081610629565b8251156118c55782518084602001fd5b8160405162461bcd60e51b81526004016103919190611d03565b8280546118eb90611e5a565b90600052602060002090601f01602090048101928261190d5760008555611953565b82601f1061192657805160ff1916838001178555611953565b82800160010185558215611953579182015b82811115611953578251825591602001919060010190611938565b5061195f929150611963565b5090565b5b8082111561195f5760008155600101611964565b6020808252825182820181905260009190848201906040850190845b818110156119b95783516001600160a01b031683529284019291840191600101611994565b50909695505050505050565b80356001600160a01b03811681146119dc57600080fd5b919050565b600080604083850312156119f457600080fd5b6119fd836119c5565b946020939093013593505050565b600060208284031215611a1d57600080fd5b610629826119c5565b600060208284031215611a3857600080fd5b5035919050565b60008060408385031215611a5257600080fd5b82359150611a62602084016119c5565b90509250929050565b600080600060408486031215611a8057600080fd5b611a89846119c5565b925060208401356001600160401b0380821115611aa557600080fd5b818601915086601f830112611ab957600080fd5b813581811115611ac857600080fd5b876020828501011115611ada57600080fd5b6020830194508093505050509250925092565b60008060408385031215611b0057600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611b3757600080fd5b81356001600160401b0380821115611b4e57600080fd5b818401915084601f830112611b6257600080fd5b813581811115611b7457611b74611b0f565b604051601f8201601f19908116603f01168101908382118183101715611b9c57611b9c611b0f565b81604052828152876020848701011115611bb557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060208385031215611be857600080fd5b82356001600160401b0380821115611bff57600080fd5b818501915085601f830112611c1357600080fd5b813581811115611c2257600080fd5b8660208260051b8501011115611c3757600080fd5b60209290920196919550909350505050565b60005b83811015611c64578181015183820152602001611c4c565b838111156104055750506000910152565b60008151808452611c8d816020860160208601611c49565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611cf657603f19888603018452611ce4858351611c75565b94509285019290850190600101611cc8565b5092979650505050505050565b6020815260006106296020830184611c75565b6020808252601f908201527f4163636f756e74466163746f72793a206e6f7420616e206163636f756e742e00604082015260600190565b6020808252602a908201527f4163636f756e74466163746f72793a206163636f756e7420616c7265616479206040820152691c9959da5cdd195c995960b21b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611dc057611dc0611d97565b500190565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611df257600080fd5b8301803591506001600160401b03821115611e0c57600080fd5b602001915036819003821315611e2157600080fd5b9250929050565b6000600019821415611e3c57611e3c611d97565b5060010190565b600082821015611e5557611e55611d97565b500390565b600181811c90821680611e6e57607f821691505b60208210811415610a5557634e487b7160e01b600052602260045260246000fd5b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351611ebf816015850160208801611c49565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351611ef0816026840160208801611c49565b01602601949350505050565b6001600160a01b0383168152604060208201819052600090611f2090830184611c75565b949350505050565b604081526000611f3b6040830185611c75565b82810360208401526106258185611c75565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000816000190483118215151615611fa757611fa7611d97565b500290565b600081611fbb57611fbb611d97565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251611feb818460208701611c49565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122017bb07e4fe26b99c2b76162ca9bbb9f67afe5c605b8706dca5213da06f4e0a7964736f6c634300080c0033"; -bytes constant THIRDWEB_ACCOUNT_IMPL_BYTECODE = hex"6080604052600436106101405760003560e01c806301ffc9a71461014c578063150b7a02146101815780631626ba7e146101c55780631dd756c5146101e557806324d7806c146102055780633a871cdd1461022557806347e1da2a146102535780634a58db19146102755780634d44560d1461027d5780635892e2361461029d5780637dff5a79146102bd5780638b52d723146102dd578063938e3d7b146102ff578063a9082d841461031f578063ac9650d81461035e578063b0d691fe1461038b578063b61d27f6146103ad578063b76464d5146103cd578063bc197c81146103ed578063c45a015514610419578063d087d2881461044d578063d1f5789414610462578063d42f2f3514610482578063e8a3d48514610497578063e9523c97146104b9578063f15d424e146104db578063f23a6e611461050857600080fd5b3661014757005b600080fd5b34801561015857600080fd5b5061016c610167366004612cee565b610534565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b506101ac61019c366004612dfa565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610178565b3480156101d157600080fd5b506101ac6101e0366004612e65565b61057a565b3480156101f157600080fd5b5061016c610200366004612ec4565b610689565b34801561021157600080fd5b5061016c610220366004612f09565b610963565b34801561023157600080fd5b50610245610240366004612f26565b610992565b604051908152602001610178565b34801561025f57600080fd5b5061027361026e366004612fb7565b6109b8565b005b610273610b29565b34801561028957600080fd5b50610273610298366004613050565b610b91565b3480156102a957600080fd5b506102736102b83660046130bd565b610c04565b3480156102c957600080fd5b5061016c6102d8366004612f09565b610fc1565b3480156102e957600080fd5b506102f261107a565b60405161017891906131d0565b34801561030b57600080fd5b5061027361031a366004613232565b6112c1565b34801561032b57600080fd5b5061033f61033a3660046130bd565b611312565b6040805192151583526001600160a01b03909116602083015201610178565b34801561036a57600080fd5b5061037e61037936600461327a565b611369565b6040516101789190613317565b34801561039757600080fd5b506103a061145d565b604051610178919061336c565b3480156103b957600080fd5b506102736103c8366004613380565b6114a6565b3480156103d957600080fd5b506102736103e8366004612f09565b611536565b3480156103f957600080fd5b506101ac610408366004613469565b63bc197c8160e01b95945050505050565b34801561042557600080fd5b506103a07f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b81565b34801561045957600080fd5b50610245611568565b34801561046e57600080fd5b5061027361047d366004613516565b6115e8565b34801561048e57600080fd5b506102f26117a0565b3480156104a357600080fd5b506104ac611911565b604051610178919061355d565b3480156104c557600080fd5b506104ce6119a9565b6040516101789190613570565b3480156104e757600080fd5b506104fb6104f6366004612f09565b6119bb565b60405161017891906135bd565b34801561051457600080fd5b506101ac6105233660046135d0565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b148061056557506001600160e01b03198216630a85bd0160e11b145b80610574575061057482611ab7565b92915050565b6000806105878484611aec565b905061059281610963565b156105a75750630b135d3f60e11b9050610574565b3360006105b2611b10565b6001600160a01b03841660009081526006919091016020526040902090506105da8183611b34565b8061060a57506105e981611b56565b600114801561060a575060006105ff8282611b60565b6001600160a01b0316145b6106675760405162461bcd60e51b8152602060048201526024808201527f4163636f756e743a2063616c6c6572206e6f7420617070726f7665642074617260448201526333b2ba1760e11b60648201526084015b60405180910390fd5b61067083610fc1565b1561068057630b135d3f60e11b93505b50505092915050565b6000610693611b10565b6001600160a01b0384166000908152600491909101602052604090205460ff16156106c057506001610574565b60006106ca611b10565b6001600160a01b0385166000908152600591909101602090815260408083208151606081018352815481526001909101546001600160801b0380821694830194909452600160801b9004909216908201529150610725611b10565b6006016000866001600160a01b03166001600160a01b0316815260200190815260200160002090504282602001516001600160801b03161180610775575081604001516001600160801b03164210155b80610786575061078481611b56565b155b1561079657600092505050610574565b60006107ad6107a86060870187613638565b611b6c565b905060006107ba83611b56565b60011480156107db575060006107d08482611b60565b6001600160a01b0316145b90506001600160e01b03198216635b0e93fb60e11b14156108535760008061080e61080960608a018a613638565b611ba6565b9150915082610834576108218583611b34565b6108345760009650505050505050610574565b855181111561084c5760009650505050505050610574565b5050610956565b6001600160e01b031982166323f0ed1560e11b14156109495760008061088461087f60608a018a613638565b611c0b565b5091509150826108ee5760005b82518110156108ec576108c68382815181106108af576108af61367e565b602002602001015187611b3490919063ffffffff16565b6108da576000975050505050505050610574565b806108e4816136aa565b915050610891565b505b60005b82518110156109415781818151811061090c5761090c61367e565b60200260200101518760000151101561092f576000975050505050505050610574565b80610939816136aa565b9150506108f1565b505050610956565b6000945050505050610574565b5060019695505050505050565b600061096d611b10565b6001600160a01b03909216600090815260049290920160205250604090205460ff1690565b600061099c611c58565b6109a68484611cc1565b90506109b182611e06565b9392505050565b6109c061145d565b6001600160a01b0316336001600160a01b031614806109e357506109e333610963565b6109ff5760405162461bcd60e51b815260040161065e906136c5565b610a07611e53565b8481148015610a1557508483145b610a615760405162461bcd60e51b815260206004820152601d60248201527f4163636f756e743a2077726f6e67206172726179206c656e677468732e000000604482015260640161065e565b60005b85811015610b2057610b0d878783818110610a8157610a8161367e565b9050602002016020810190610a969190612f09565b868684818110610aa857610aa861367e565b90506020020135858585818110610ac157610ac161367e565b9050602002810190610ad39190613638565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f3992505050565b5080610b18816136aa565b915050610a64565b50505050505050565b610b3161145d565b6001600160a01b031663b760faf934306040518363ffffffff1660e01b8152600401610b5d919061336c565b6000604051808303818588803b158015610b7657600080fd5b505af1158015610b8a573d6000803e3d6000fd5b5050505050565b610b99611faa565b610ba161145d565b6001600160a01b031663205c287883836040518363ffffffff1660e01b8152600401610bce929190613706565b600060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b505050505050565b6000610c136020850185612f09565b905042610c2660e0860160c08701613736565b6001600160801b031611158015610c555750610c49610100850160e08601613736565b6001600160801b031642105b610c8b5760405162461bcd60e51b8152602060048201526007602482015266085c195c9a5bd960ca1b604482015260640161065e565b600080610c99868686611312565b9150915081610cd35760405162461bcd60e51b815260040161065e906020808252600490820152632173696760e01b604082015260600190565b6001610cdd611b10565b610100880135600090815260079190910160209081526040808320805460ff1916941515949094179093559091610d1991908901908901613762565b60ff161115610d46576000610d346040880160208901613762565b60ff166001149050610b208482611fe8565b610d4f83610963565b15610d845760405162461bcd60e51b815260206004820152600560248201526430b236b4b760d91b604482015260640161065e565b610d9983610d90611b10565b600201906120bd565b50604051806060016040528087606001358152602001876080016020810190610dc29190613736565b6001600160801b03168152602001610de060c0890160a08a01613736565b6001600160801b03169052610df3611b10565b6001600160a01b03851660009081526005919091016020908152604080832084518155918401519301516001600160801b03908116600160801b02931692909217600190920191909155610e69610e48611b10565b6001600160a01b0386166000908152600691909101602052604090206120d2565b805190915060005b81811015610ed357610ec0838281518110610e8e57610e8e61367e565b6020026020010151610e9e611b10565b6001600160a01b038916600090815260069190910160205260409020906120df565b50610ecc60018261377d565b9050610e71565b50610ee16040890189613795565b9050905060005b81811015610f6257610f4f610f0060408b018b613795565b83818110610f1057610f1061367e565b9050602002016020810190610f259190612f09565b610f2d611b10565b6001600160a01b038916600090815260069190910160205260409020906120bd565b50610f5b60018261377d565b9050610ee8565b50610f6c886120f4565b846001600160a01b0316836001600160a01b03167ff21d10c26e35863a8df291aca54181ee8c4a3bc8e00246c3f7a5a14b69d826a78a604051610faf919061386f565b60405180910390a35050505050505050565b600080610fcc611b10565b6001600160a01b038416600090815260059190910160209081526040918290208251606081018452815481526001909101546001600160801b03808216938301849052600160801b9091041692810192909252909150421080159061103d575080604001516001600160801b031642105b80156109b157506000611072611051611b10565b6001600160a01b038616600090815260069190910160205260409020611b56565b119392505050565b60606000611091611089611b10565b6002016120d2565b80519091506000805b82811015611122576110c48482815181106110b7576110b761367e565b6020026020010151610fc1565b156110db57816110d3816136aa565b925050611110565b60008482815181106110ef576110ef61367e565b60200260200101906001600160a01b031690816001600160a01b0316815250505b61111b60018261377d565b905061109a565b50806001600160401b0381111561113b5761113b612d3d565b60405190808252806020026020018201604052801561117457816020015b611161612c0b565b8152602001906001900390816111595790505b5093506000805b838110156112b95760006001600160a01b03168582815181106111a0576111a061367e565b60200260200101516001600160a01b0316146112a75760008582815181106111ca576111ca61367e565b6020026020010151905060006111de611b10565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611248610e48611b10565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250888580611287906136aa565b9650815181106112995761129961367e565b602002602001018190525050505b6112b260018261377d565b905061117b565b505050505090565b6112c9612189565b6113065760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015260640161065e565b61130f816121a1565b50565b6000806113286113218661228c565b85856123d0565b9050611332611b10565b6101008601356000908152600791909101602052604090205460ff1615801561135f575061135f81610963565b9150935093915050565b6060816001600160401b0381111561138357611383612d3d565b6040519080825280602002602001820160405280156113b657816020015b60608152602001906001900390816113a15790505b50905060005b8281101561145657611426308585848181106113da576113da61367e565b90506020028101906113ec9190613638565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061242a92505050565b8282815181106114385761143861367e565b6020026020010181905250808061144e906136aa565b9150506113bc565b5092915050565b60008061146861244f565b546001600160a01b03169050801561147f57919050565b7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278991505090565b6114ae61145d565b6001600160a01b0316336001600160a01b031614806114d157506114d133610963565b6114ed5760405162461bcd60e51b815260040161065e906136c5565b6114f5611e53565b610b8a848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f3992505050565b61153e611faa565b8061154761244f565b80546001600160a01b0319166001600160a01b039290921691909117905550565b600061157261145d565b604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156115bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e3919061395a565b905090565b60006115f2612473565b5460ff1690506000611602612473565b54610100900460ff169050801580801561161f575060018360ff16105b8061163e575061162e3061247d565b15801561163e57508260ff166001145b6116a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161065e565b60016116ab612473565b805460ff191660ff9290921691909117905580156116e45760016116cd612473565b80549115156101000261ff00199092169190911790555b6117248686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061248c92505050565b61172c61244f565b6001018190555061173e866001611fe8565b8015610bfc57600061174e612473565b80549115156101000261ff0019909216919091179055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b606060006117af611089611b10565b8051909150806001600160401b038111156117cc576117cc612d3d565b60405190808252806020026020018201604052801561180557816020015b6117f2612c0b565b8152602001906001900390816117ea5790505b50925060005b8181101561190b5760008382815181106118275761182761367e565b60200260200101519050600061183b611b10565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a0810190945291835290925081016118a5610e48611b10565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b03168152508684815181106118ea576118ea61367e565b60200260200101819052505050600181611904919061377d565b905061180b565b50505090565b606061191b6124bf565b805461192690613973565b80601f016020809104026020016040519081016040528092919081815260200182805461195290613973565b801561199f5780601f106119745761010080835404028352916020019161199f565b820191906000526020600020905b81548152906001019060200180831161198257829003601f168201915b5050505050905090565b60606115e36119b6611b10565b6120d2565b6119c3612c0b565b60006119cd611b10565b6001600160a01b038416600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611a58611a37611b10565b6001600160a01b0387166000908152600691909101602052604090206120d2565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250915050919050565b7f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee030090565b60006001600160e01b03198216630271189760e51b148061057457506301ffc9a760e01b6001600160e01b0319831614610574565b6000806000611afb85856124e3565b91509150611b0881612529565b509392505050565b7f3181e78fc1b109bc611fd2406150bf06e33faa75f71cba12c3e1fd670f2def0090565b6001600160a01b038116600090815260018301602052604081205415156109b1565b6000610574825490565b60006109b18383612672565b60006004821015611b8f5760405162461bcd60e51b815260040161065e906139a8565b611b9d6004600084866139c7565b6109b1916139f1565b6000806044831015611bca5760405162461bcd60e51b815260040161065e906139a8565b611bd86024600485876139c7565b810190611be59190612f09565b9150611bf56044602485876139c7565b810190611c029190613a21565b90509250929050565b606080806064841015611c305760405162461bcd60e51b815260040161065e906139a8565b611c3d84600481886139c7565b810190611c4a9190613ab9565b919790965090945092505050565b611c6061145d565b6001600160a01b0316336001600160a01b031614611cbf5760405162461bcd60e51b815260206004820152601c60248201527b1858d8dbdd5b9d0e881b9bdd08199c9bdb48115b9d1c9e541bda5b9d60221b604482015260640161065e565b565b7b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6000908152601c829052603c81206000611d3f611d02610140870187613638565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611aec9050565b9050611d4b8186610689565b611d5a57600192505050610574565b6000611d64611b10565b6001600160a01b03929092166000908152600590920160209081526040808420815160608082018452825482526001909201546001600160801b0380821683870152600160801b8204908116928501929092528351928301845295825265ffffffffffff8087169483019490945292831691015260d09290921b6001600160d01b03191660a09290921b65ffffffffffff60a01b169190911795945050505050565b801561130f57604051600090339060001990849084818181858888f193505050503d8060008114610b8a576040519150601f19603f3d011682016040523d82523d6000602084013e610b8a565b60405163c3c5a54760e01b81527f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b906001600160a01b0382169063c3c5a54790611ea190309060040161336c565b602060405180830381865afa158015611ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee29190613b9e565b61130f57806001600160a01b03166383a03f8c611efd61244f565b600101546040518263ffffffff1660e01b8152600401611f1f91815260200190565b600060405180830381600087803b158015610b7657600080fd5b60606000846001600160a01b03168484604051611f569190613bc0565b60006040518083038185875af1925050503d8060008114611f93576040519150601f19603f3d011682016040523d82523d6000602084013e611f98565b606091505b509250905080611b0857815160208301fd5b611fb333610963565b611cbf5760405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015260640161065e565b611ff2828261269c565b6001600160a01b037f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b163b156120b9578015612081577f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b6001600160a01b0316630b61e12b8361206061244f565b600101546040518363ffffffff1660e01b8152600401610bce929190613706565b7f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b6001600160a01b0316639387a3808361206061244f565b5050565b60006109b1836001600160a01b03841661274b565b606060006109b18361279a565b60006109b1836001600160a01b0384166127f6565b6001600160a01b037f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b163b1561130f576001600160a01b037f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b16630b61e12b6121606020840184612f09565b61216861244f565b600101546040518363ffffffff1660e01b8152600401611f1f929190613706565b600061219433610963565b806115e357505030331490565b60006121ab6124bf565b80546121b690613973565b80601f01602080910402602001604051908101604052809291908181526020018280546121e290613973565b801561222f5780601f106122045761010080835404028352916020019161222f565b820191906000526020600020905b81548152906001019060200180831161221257829003601f168201915b505050505090508161223f6124bf565b815161224e9260200190612c55565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051612280929190613bdc565b60405180910390a15050565b60607f3fd4a1a1a267c84185e3b7eecd57c68783c0581d538b9d6e5f23e4670497c1e96122bc6020840184612f09565b6122cc6040850160208601613762565b6122d96040860186613795565b6040516020016122ea929190613c0a565b60408051601f198184030181529190528051602090910120606086013561231760a0880160808901613736565b61232760c0890160a08a01613736565b61233760e08a0160c08b01613736565b6123486101008b0160e08c01613736565b60408051602081019a909a526001600160a01b039098169789019790975260ff9095166060880152608087019390935260a08601919091526001600160801b0390811660c086015290811660e0850152908116610100848101919091529116610120830152830135610140820152610160016040516020818303038152906040529050919050565b600061242283838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508751602089012061241c925090506128e9565b90611aec565b949350505050565b60606109b18383604051806060016040528060278152602001613cb460279139612916565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b54830090565b60006115e3611a93565b6001600160a01b03163b151590565b600082826040516020016124a1929190613c4c565b60405160208183030381529060405280519060200120905092915050565b7f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b60008082516041141561251a5760208301516040840151606085015160001a61250e878285856129f1565b94509450505050612522565b506000905060025b9250929050565b600081600481111561253d5761253d613c70565b14156125465750565b600181600481111561255a5761255a613c70565b14156125a35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161065e565b60028160048111156125b7576125b7613c70565b14156126055760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161065e565b600381600481111561261957612619613c70565b141561130f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161065e565b60008260000182815481106126895761268961367e565b9060005260206000200154905092915050565b806126a5611b10565b6001600160a01b038416600090815260049190910160205260409020805460ff191691151591909117905580156126ee576126e8826126e2611b10565b906120bd565b50612702565b612700826126fa611b10565b906120df565b505b816001600160a01b03167f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a111338260405161273f911515815260200190565b60405180910390a25050565b600081815260018301602052604081205461279257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610574565b506000610574565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127ea57602002820191906000526020600020905b8154815260200190600101908083116127d6575b50505050509050919050565b600081815260018301602052604081205480156128df57600061281a600183613c86565b855490915060009061282e90600190613c86565b905081811461289357600086600001828154811061284e5761284e61367e565b90600052602060002001549050808760000184815481106128715761287161367e565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128a4576128a4613c9d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610574565b6000915050610574565b60006105746128f6612aab565b8360405161190160f01b8152600281019290925260228201526042902090565b60606129218461247d565b61297c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161065e565b600080856001600160a01b0316856040516129979190613bc0565b600060405180830381855af49150503d80600081146129d2576040519150601f19603f3d011682016040523d82523d6000602084013e6129d7565b606091505b50915091506129e7828286612bd2565b9695505050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612a1e5750600090506003612aa2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612a72573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612a9b57600060019250925050612aa2565b9150600090505b94509492505050565b6000306001600160a01b037f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac16148015612b0457507f0000000000000000000000000000000000000000000000000000000000007a6946145b15612b2e57507fbcdadf6444930a967ffda04923d78c49b3dd65df3ed39abb04a1e3eb1190553790565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527ff0729608244859f656d32ae4cbc6b0367695d68d8e941a28f5e2d33c6d5182dd828401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60608315612be15750816109b1565b825115612bf15782518084602001fd5b8160405162461bcd60e51b815260040161065e919061355d565b6040518060a0016040528060006001600160a01b03168152602001606081526020016000815260200160006001600160801b0316815260200160006001600160801b031681525090565b828054612c6190613973565b90600052602060002090601f016020900481019282612c835760008555612cc9565b82601f10612c9c57805160ff1916838001178555612cc9565b82800160010185558215612cc9579182015b82811115612cc9578251825591602001919060010190612cae565b50612cd5929150612cd9565b5090565b5b80821115612cd55760008155600101612cda565b600060208284031215612d0057600080fd5b81356001600160e01b0319811681146109b157600080fd5b6001600160a01b038116811461130f57600080fd5b8035612d3881612d18565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612d7b57612d7b612d3d565b604052919050565b60006001600160401b03831115612d9c57612d9c612d3d565b612daf601f8401601f1916602001612d53565b9050828152838383011115612dc357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612deb57600080fd5b6109b183833560208501612d83565b60008060008060808587031215612e1057600080fd5b8435612e1b81612d18565b93506020850135612e2b81612d18565b92506040850135915060608501356001600160401b03811115612e4d57600080fd5b612e5987828801612dda565b91505092959194509250565b60008060408385031215612e7857600080fd5b8235915060208301356001600160401b03811115612e9557600080fd5b612ea185828601612dda565b9150509250929050565b60006101608284031215612ebe57600080fd5b50919050565b60008060408385031215612ed757600080fd5b8235612ee281612d18565b915060208301356001600160401b03811115612efd57600080fd5b612ea185828601612eab565b600060208284031215612f1b57600080fd5b81356109b181612d18565b600080600060608486031215612f3b57600080fd5b83356001600160401b03811115612f5157600080fd5b612f5d86828701612eab565b9660208601359650604090950135949350505050565b60008083601f840112612f8557600080fd5b5081356001600160401b03811115612f9c57600080fd5b6020830191508360208260051b850101111561252257600080fd5b60008060008060008060608789031215612fd057600080fd5b86356001600160401b0380821115612fe757600080fd5b612ff38a838b01612f73565b9098509650602089013591508082111561300c57600080fd5b6130188a838b01612f73565b9096509450604089013591508082111561303157600080fd5b5061303e89828a01612f73565b979a9699509497509295939492505050565b6000806040838503121561306357600080fd5b823561306e81612d18565b946020939093013593505050565b60008083601f84011261308e57600080fd5b5081356001600160401b038111156130a557600080fd5b60208301915083602082850101111561252257600080fd5b6000806000604084860312156130d257600080fd5b83356001600160401b03808211156130e957600080fd5b9085019061012082880312156130fe57600080fd5b9093506020850135908082111561311457600080fd5b506131218682870161307c565b9497909650939450505050565b6001600160801b03169052565b80516001600160a01b03908116835260208083015160a082860181905281519086018190526000939183019290849060c08801905b8083101561319257855185168252948301946001929092019190830190613170565b5060408701516040890152606087015194506131b1606089018661312e565b608087015194506131c5608089018661312e565b979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561322557603f1988860301845261321385835161313b565b945092850192908501906001016131f7565b5092979650505050505050565b60006020828403121561324457600080fd5b81356001600160401b0381111561325a57600080fd5b8201601f8101841361326b57600080fd5b61242284823560208401612d83565b6000806020838503121561328d57600080fd5b82356001600160401b038111156132a357600080fd5b6132af85828601612f73565b90969095509350505050565b60005b838110156132d65781810151838201526020016132be565b838111156132e5576000848401525b50505050565b600081518084526133038160208601602086016132bb565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561322557603f1988860301845261335a8583516132eb565b9450928501929085019060010161333e565b6001600160a01b0391909116815260200190565b6000806000806060858703121561339657600080fd5b84356133a181612d18565b93506020850135925060408501356001600160401b038111156133c357600080fd5b6133cf8782880161307c565b95989497509550505050565b60006001600160401b038211156133f4576133f4612d3d565b5060051b60200190565b600082601f83011261340f57600080fd5b8135602061342461341f836133db565b612d53565b82815260059290921b8401810191818101908684111561344357600080fd5b8286015b8481101561345e5780358352918301918301613447565b509695505050505050565b600080600080600060a0868803121561348157600080fd5b853561348c81612d18565b9450602086013561349c81612d18565b935060408601356001600160401b03808211156134b857600080fd5b6134c489838a016133fe565b945060608801359150808211156134da57600080fd5b6134e689838a016133fe565b935060808801359150808211156134fc57600080fd5b5061350988828901612dda565b9150509295509295909350565b60008060006040848603121561352b57600080fd5b833561353681612d18565b925060208401356001600160401b0381111561355157600080fd5b6131218682870161307c565b6020815260006109b160208301846132eb565b6020808252825182820181905260009190848201906040850190845b818110156135b15783516001600160a01b03168352928401929184019160010161358c565b50909695505050505050565b6020815260006109b1602083018461313b565b600080600080600060a086880312156135e857600080fd5b85356135f381612d18565b9450602086013561360381612d18565b9350604086013592506060860135915060808601356001600160401b0381111561362c57600080fd5b61350988828901612dda565b6000808335601e1984360301811261364f57600080fd5b8301803591506001600160401b0382111561366957600080fd5b60200191503681900382131561252257600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156136be576136be613694565b5060010190565b60208082526021908201527f4163636f756e743a206e6f742061646d696e206f7220456e747279506f696e746040820152601760f91b606082015260800190565b6001600160a01b03929092168252602082015260400190565b80356001600160801b0381168114612d3857600080fd5b60006020828403121561374857600080fd5b6109b18261371f565b803560ff81168114612d3857600080fd5b60006020828403121561377457600080fd5b6109b182613751565b6000821982111561379057613790613694565b500190565b6000808335601e198436030181126137ac57600080fd5b8301803591506001600160401b038211156137c657600080fd5b6020019150600581901b360382131561252257600080fd5b6000808335601e198436030181126137f557600080fd5b83016020810192503590506001600160401b0381111561381457600080fd5b8060051b360383131561252257600080fd5b8183526000602080850194508260005b8581101561386457813561384981612d18565b6001600160a01b031687529582019590820190600101613836565b509495945050505050565b602081526138906020820161388384612d2d565b6001600160a01b03169052565b600061389e60208401613751565b60ff81166040840152506138b560408401846137de565b6101208060608601526138cd61014086018385613826565b9250606086013560808601526138e56080870161371f565b91506138f460a086018361312e565b61390060a0870161371f565b915061390f60c086018361312e565b61391b60c0870161371f565b915061392a60e086018361312e565b61393660e0870161371f565b91506101006139478187018461312e565b9590950135939094019290925250919050565b60006020828403121561396c57600080fd5b5051919050565b600181811c9082168061398757607f821691505b60208210811415612ebe57634e487b7160e01b600052602260045260246000fd5b602080825260059082015264214461746160d81b604082015260600190565b600080858511156139d757600080fd5b838611156139e457600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015613a195780818660040360031b1b83161692505b505092915050565b600060208284031215613a3357600080fd5b5035919050565b600082601f830112613a4b57600080fd5b81356020613a5b61341f836133db565b82815260059290921b84018101918181019086841115613a7a57600080fd5b8286015b8481101561345e5780356001600160401b03811115613a9d5760008081fd5b613aab8986838b0101612dda565b845250918301918301613a7e565b600080600060608486031215613ace57600080fd5b83356001600160401b0380821115613ae557600080fd5b818601915086601f830112613af957600080fd5b81356020613b0961341f836133db565b82815260059290921b8401810191818101908a841115613b2857600080fd5b948201945b83861015613b4f578535613b4081612d18565b82529482019490820190613b2d565b97505087013592505080821115613b6557600080fd5b613b71878388016133fe565b93506040860135915080821115613b8757600080fd5b50613b9486828701613a3a565b9150509250925092565b600060208284031215613bb057600080fd5b815180151581146109b157600080fd5b60008251613bd28184602087016132bb565b9190910192915050565b604081526000613bef60408301856132eb565b8281036020840152613c0181856132eb565b95945050505050565b60008184825b85811015613c41578135613c2381612d18565b6001600160a01b031683526020928301929190910190600101613c10565b509095945050505050565b6001600160a01b0383168152604060208201819052600090612422908301846132eb565b634e487b7160e01b600052602160045260246000fd5b600082821015613c9857613c98613694565b500390565b634e487b7160e01b600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220716b4aba2dec0a2a6990174ef5e5fb2d33cf6e1ca5e064499e3cd6f7aefa279564736f6c634300080c0033"; +bytes constant THIRDWEB_ACCOUNT_FACTORY_BYTECODE = hex"608060405234801561001057600080fd5b50600436106101285760003560e01c806308e93d0a1461012d5780630b61e12b1461014b5780630e6254fd1461016057806311464fbe14610173578063248a9ca3146101b25780632f2ff15d146101d357806336568abe146101e657806358451f97146101f957806383a03f8c146102015780638878ed33146102145780639010d07c1461022757806391d148541461023a5780639387a3801461025d578063938e3d7b14610270578063a217fddf14610283578063a32fa5b31461028b578063a65d69d41461029e578063ac9650d8146102c5578063c3c5a547146102e5578063ca15c873146102f8578063d547741f1461030b578063d8fd8f441461031e578063e68a7c3b14610331578063e8a3d48514610344575b600080fd5b610135610359565b60405161014291906118d5565b60405180910390f35b61015e61015936600461193e565b61036a565b005b61013561016e366004611968565b61040b565b61019a7f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac81565b6040516001600160a01b039091168152602001610142565b6101c56101c0366004611983565b610435565b604051908152602001610142565b61015e6101e136600461199c565b610453565b61015e6101f436600461199c565b6104fd565b6101c561055c565b61015e61020f366004611983565b610568565b61019a6102223660046119c8565b6105b6565b61019a610235366004611a4a565b610630565b61024d61024836600461199c565b61073e565b6040519015158152602001610142565b61015e61026b36600461193e565b610772565b61015e61027e366004611a82565b610809565b6101c5600081565b61024d61029936600461199c565b61085a565b61019a7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278981565b6102d86102d3366004611b32565b6108bd565b6040516101429190611bf6565b61024d6102f3366004611968565b6109a6565b6101c5610306366004611983565b6109b2565b61015e61031936600461199c565b610a4f565b61019a61032c3660046119c8565b610a5a565b61013561033f366004611a4a565b610ba5565b61034c610cd6565b6040516101429190611c5a565b60606103656000610d6e565b905090565b336103758183610d7b565b61039a5760405162461bcd60e51b815260040161039190611c6d565b60405180910390fd5b6001600160a01b03831660009081526002602052604081206103bc9083610dbf565b9050801561040557836001600160a01b0316826001600160a01b03167f12146497b3b826918ec47f0cac7272a09ed06b30c16c030e99ec48ff5dd60b4760405160405180910390a35b50505050565b6001600160a01b038116600090815260026020526040902060609061042f90610d6e565b92915050565b600061043f610dd4565b600092835260010160205250604090205490565b61047761045e610dd4565b6000848152600191909101602052604090205433610df8565b61047f610dd4565b6000838152602091825260408082206001600160a01b0385168352909252205460ff16156104ef5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610391565b6104f98282610e7d565b5050565b336001600160a01b038216146105525760405162461bcd60e51b815260206004820152601a60248201527921b0b71037b7363c903932b737bab731b2903337b91039b2b63360311b6044820152606401610391565b6104f98282610e91565b60006103656000610ea5565b336105738183610d7b565b61058f5760405162461bcd60e51b815260040161039190611c6d565b61059a600082610dbf565b6104f95760405162461bcd60e51b815260040161039190611ca4565b6000806105f98585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eaf92505050565b90506106257f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac82610ee2565b9150505b9392505050565b60008061063b610f42565b600085815260209190915260408120549150805b82811015610735576000610661610f42565b60008881526020918252604080822085835260010190925220546001600160a01b0316146106d9578482036106c757610698610f42565b600087815260209182526040808220938252600190930190915220546001600160a01b0316925061042f915050565b6106d2600183611d04565b9150610723565b6106e486600061073e565b801561071057506106f3610f42565b600087815260209182526040808220828052600201909252205481145b1561072357610720600183611d04565b91505b61072e600182611d04565b905061064f565b50505092915050565b6000610748610dd4565b6000938452602090815260408085206001600160a01b039490941685529290525090205460ff1690565b3361077d8183610d7b565b6107995760405162461bcd60e51b815260040161039190611c6d565b6001600160a01b03831660009081526002602052604081206107bb9083610f4c565b9050801561040557836001600160a01b0316826001600160a01b03167f98d1ebbe00ae92a5de96a0f49742a8afa89f42363592bc2e7cfaaed68b45e7a660405160405180910390a350505050565b610811610f61565b61084e5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610391565b61085781610f6d565b50565b6000610864610dd4565b600084815260209182526040808220828052909252205460ff166108b45761088a610dd4565b6000848152602091825260408082206001600160a01b0386168352909252205460ff16905061042f565b50600192915050565b6060816001600160401b038111156108d7576108d7611a6c565b60405190808252806020026020018201604052801561090a57816020015b60608152602001906001900390816108f55790505b50905060005b8281101561099f5761097a3085858481811061092e5761092e611d17565b90506020028101906109409190611d2d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061105492505050565b82828151811061098c5761098c611d17565b6020908102919091010152600101610910565b5092915050565b600061042f8183611079565b6000806109bd610f42565b6000848152602091909152604081205491505b81811015610a2a5760006109e2610f42565b60008681526020918252604080822085835260010190925220546001600160a01b031614610a1857610a15600184611d04565b92505b610a23600182611d04565b90506109d0565b50610a3683600061073e565b15610a4957610a46600183611d04565b91505b50919050565b61055261045e610dd4565b6000807f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac90506000610ac28686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eaf92505050565b90506000610ad08383610ee2565b90506001600160a01b0381163b15610aec579250610629915050565b610af6838361109b565b9050336001600160a01b037f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27891614610b4f57610b33600082610dbf565b610b4f5760405162461bcd60e51b815260040161039190611ca4565b610b5b81888888611132565b866001600160a01b0316816001600160a01b03167fac631f3001b55ea1509cf3d7e74898f85392a61a76e8149181ae1259622dabc860405160405180910390a39695505050505050565b60608183108015610bbf5750610bbb6000610ea5565b8211155b610c175760405162461bcd60e51b815260206004820152602360248201527f426173654163636f756e74466163746f72793a20696e76616c696420696e646960448201526263657360e81b6064820152608401610391565b6000610c238484611d7a565b9050610c2f8484611d7a565b6001600160401b03811115610c4657610c46611a6c565b604051908082528060200260200182016040528015610c6f578160200160208202803683370190505b50915060005b81811015610cce57610c92610c8a8683611d04565b60009061119a565b838281518110610ca457610ca4611d17565b6001600160a01b0390921660209283029190910190910152610cc7600182611d04565b9050610c75565b505092915050565b6060610ce06111a6565b8054610ceb90611d8d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1790611d8d565b8015610d645780601f10610d3957610100808354040283529160200191610d64565b820191906000526020600020905b815481529060010190602001808311610d4757829003601f168201915b5050505050905090565b60606000610629836111ca565b600080610da87f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac84610ee2565b6001600160a01b0385811691161491505092915050565b6000610629836001600160a01b038416611226565b7f0a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e50090565b610e00610dd4565b6000838152602091825260408082206001600160a01b0385168352909252205460ff166104f957610e3b816001600160a01b03166014611275565b610e46836020611275565b604051602001610e57929190611dc1565b60408051601f198184030181529082905262461bcd60e51b825261039191600401611c5a565b610e878282611410565b6104f98282611479565b610e9b8282611538565b6104f982826115a1565b600061042f825490565b60008282604051602001610ec4929190611e2e565b60405160208183030381529060405280519060200120905092915050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c82012060788201526055604390910120600090610629565b6000610365611630565b6000610629836001600160a01b038416611692565b6000610365813361073e565b6000610f776111a6565b8054610f8290611d8d565b80601f0160208091040260200160405190810160405280929190818152602001828054610fae90611d8d565b8015610ffb5780601f10610fd057610100808354040283529160200191610ffb565b820191906000526020600020905b815481529060010190602001808311610fde57829003601f168201915b505050505090508161100b6111a6565b906110169082611eab565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051611048929190611f6a565b60405180910390a15050565b6060610629838360405180606001604052806027815260200161203060279139611785565b6001600160a01b03811660009081526001830160205260408120541515610629565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661042f5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b6044820152606401610391565b60405163347d5e2560e21b81526001600160a01b0385169063d1f578949061116290869086908690600401611f8f565b600060405180830381600087803b15801561117c57600080fd5b505af1158015611190573d6000803e3d6000fd5b5050505050505050565b60006106298383611863565b7f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b60608160000180548060200260200160405190810160405280929190818152602001828054801561121a57602002820191906000526020600020905b815481526020019060010190808311611206575b50505050509050919050565b600081815260018301602052604081205461126d5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561042f565b50600061042f565b60606000611284836002611fcf565b61128f906002611d04565b6001600160401b038111156112a6576112a6611a6c565b6040519080825280601f01601f1916602001820160405280156112d0576020820181803683370190505b509050600360fc1b816000815181106112eb576112eb611d17565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061131a5761131a611d17565b60200101906001600160f81b031916908160001a905350600061133e846002611fcf565b611349906001611d04565b90505b60018111156113c1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061137d5761137d611d17565b1a60f81b82828151811061139357611393611d17565b60200101906001600160f81b031916908160001a90535060049490941c936113ba81611fe6565b905061134c565b5083156106295760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610391565b600161141a610dd4565b6000848152602091825260408082206001600160a01b0386168084529352808220805460ff1916941515949094179093559151339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000611483610f42565b600084815260209190915260409020549050600161149f610f42565b60008581526020919091526040812080549091906114be908490611d04565b909155508290506114cd610f42565b6000858152602091825260408082208583526001019092522080546001600160a01b0319166001600160a01b03929092169190911790558061150d610f42565b6000948552602090815260408086206001600160a01b03909516865260029094019052919092205550565b6115428282610df8565b61154a610dd4565b6000838152602091825260408082206001600160a01b0385168084529352808220805460ff191690555133929185917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006115ab610f42565b6000848152602091825260408082206001600160a01b0386168352600201909252205490506115d8610f42565b6000848152602091825260408082208483526001019092522080546001600160a01b0319169055611607610f42565b6000938452602090815260408085206001600160a01b0390941685526002909301905250812055565b60008060ff1961166160017f0c4ba382c0009cf238e4c1ca1a52f51c61e6248a70bdfb34e5ed49d5578a5c0c611d7a565b60405160200161167391815260200190565b60408051601f1981840301815291905280516020909101201692915050565b6000818152600183016020526040812054801561177b5760006116b6600183611d7a565b85549091506000906116ca90600190611d7a565b905081811461172f5760008660000182815481106116ea576116ea611d17565b906000526020600020015490508087600001848154811061170d5761170d611d17565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061174057611740611ffd565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061042f565b600091505061042f565b60606117908461188d565b80156117a257506117a03361188d565b155b6117ee5760405162461bcd60e51b815260206004820152601e60248201527f416464726573733a20696e76616c69642064656c65676174652063616c6c00006044820152606401610391565b600080856001600160a01b0316856040516118099190612013565b600060405180830381855af49150503d8060008114611844576040519150601f19603f3d011682016040523d82523d6000602084013e611849565b606091505b509150915061185982828661189c565b9695505050505050565b600082600001828154811061187a5761187a611d17565b9060005260206000200154905092915050565b6001600160a01b03163b151590565b606083156118ab575081610629565b8251156118bb5782518084602001fd5b8160405162461bcd60e51b81526004016103919190611c5a565b6020808252825182820181905260009190848201906040850190845b818110156119165783516001600160a01b0316835292840192918401916001016118f1565b50909695505050505050565b80356001600160a01b038116811461193957600080fd5b919050565b6000806040838503121561195157600080fd5b61195a83611922565b946020939093013593505050565b60006020828403121561197a57600080fd5b61062982611922565b60006020828403121561199557600080fd5b5035919050565b600080604083850312156119af57600080fd5b823591506119bf60208401611922565b90509250929050565b6000806000604084860312156119dd57600080fd5b6119e684611922565b925060208401356001600160401b0380821115611a0257600080fd5b818601915086601f830112611a1657600080fd5b813581811115611a2557600080fd5b876020828501011115611a3757600080fd5b6020830194508093505050509250925092565b60008060408385031215611a5d57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611a9457600080fd5b81356001600160401b0380821115611aab57600080fd5b818401915084601f830112611abf57600080fd5b813581811115611ad157611ad1611a6c565b604051601f8201601f19908116603f01168101908382118183101715611af957611af9611a6c565b81604052828152876020848701011115611b1257600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060208385031215611b4557600080fd5b82356001600160401b0380821115611b5c57600080fd5b818501915085601f830112611b7057600080fd5b813581811115611b7f57600080fd5b8660208260051b8501011115611b9457600080fd5b60209290920196919550909350505050565b60005b83811015611bc1578181015183820152602001611ba9565b50506000910152565b60008151808452611be2816020860160208601611ba6565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015611c4d57603f19888603018452611c3b858351611bca565b94509285019290850190600101611c1f565b5092979650505050505050565b6020815260006106296020830184611bca565b6020808252601f908201527f4163636f756e74466163746f72793a206e6f7420616e206163636f756e742e00604082015260600190565b6020808252602a908201527f4163636f756e74466163746f72793a206163636f756e7420616c7265616479206040820152691c9959da5cdd195c995960b21b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561042f5761042f611cee565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611d4457600080fd5b8301803591506001600160401b03821115611d5e57600080fd5b602001915036819003821315611d7357600080fd5b9250929050565b8181038181111561042f5761042f611cee565b600181811c90821680611da157607f821691505b602082108103610a4957634e487b7160e01b600052602260045260246000fd5b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351611df1816015850160208801611ba6565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351611e22816026840160208801611ba6565b01602601949350505050565b6001600160a01b0383168152604060208201819052600090611e5290830184611bca565b949350505050565b601f821115611ea6576000816000526020600020601f850160051c81016020861015611e835750805b601f850160051c820191505b81811015611ea257828155600101611e8f565b5050505b505050565b81516001600160401b03811115611ec457611ec4611a6c565b611ed881611ed28454611d8d565b84611e5a565b602080601f831160018114611f0d5760008415611ef55750858301515b600019600386901b1c1916600185901b178555611ea2565b600085815260208120601f198616915b82811015611f3c57888601518255948401946001909101908401611f1d565b5085821015611f5a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000611f7d6040830185611bca565b82810360208401526106258185611bca565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b808202811582820484141761042f5761042f611cee565b600081611ff557611ff5611cee565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251612025818460208701611ba6565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c0e058df1f381be48f9dd10d98ac143affab07c9f30aea5be5bbb089ec1ca3a364736f6c63430008170033"; +bytes constant THIRDWEB_ACCOUNT_IMPL_BYTECODE = hex"60806040526004361061014b5760003560e01c806301ffc9a7146101575780630a1028c41461018c578063150b7a02146101ba5780631626ba7e146101fe5780631dd756c51461021e57806324d7806c1461023e5780633a871cdd1461025e57806347e1da2a1461027e5780634a58db19146102a05780634d44560d146102a85780635892e236146102c85780637dff5a79146102e85780638b52d72314610308578063938e3d7b1461032a578063a9082d841461034a578063ac9650d814610389578063b0d691fe146103b6578063b61d27f6146103d8578063b76464d5146103f8578063bc197c8114610418578063c45a015514610444578063d087d28814610478578063d1f578941461048d578063d42f2f35146104ad578063e8a3d485146104c2578063e9523c97146104e4578063f15d424e14610506578063f23a6e611461053357600080fd5b3661015257005b600080fd5b34801561016357600080fd5b50610177610172366004612d1a565b61055f565b60405190151581526020015b60405180910390f35b34801561019857600080fd5b506101ac6101a7366004612e01565b6105a5565b604051908152602001610183565b3480156101c657600080fd5b506101e56101d5366004612e5a565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610183565b34801561020a57600080fd5b506101e5610219366004612ec5565b610649565b34801561022a57600080fd5b50610177610239366004612f24565b610789565b34801561024a57600080fd5b50610177610259366004612f69565b610a4d565b34801561026a57600080fd5b506101ac610279366004612f86565b610a7c565b34801561028a57600080fd5b5061029e610299366004613017565b610aa2565b005b61029e610c09565b3480156102b457600080fd5b5061029e6102c33660046130b0565b610c71565b3480156102d457600080fd5b5061029e6102e336600461311d565b610ce4565b3480156102f457600080fd5b50610177610303366004612f69565b6110a1565b34801561031457600080fd5b5061031d61115a565b6040516101839190613230565b34801561033657600080fd5b5061029e610345366004613294565b6113a1565b34801561035657600080fd5b5061036a61036536600461311d565b6113f2565b6040805192151583526001600160a01b03909116602083015201610183565b34801561039557600080fd5b506103a96103a43660046132dc565b611449565b604051610183919061336d565b3480156103c257600080fd5b506103cb611532565b60405161018391906133c4565b3480156103e457600080fd5b5061029e6103f33660046133d8565b61157b565b34801561040457600080fd5b5061029e610413366004612f69565b61160b565b34801561042457600080fd5b506101e56104333660046134c5565b63bc197c8160e01b95945050505050565b34801561045057600080fd5b506103cb7f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b81565b34801561048457600080fd5b506101ac61163d565b34801561049957600080fd5b5061029e6104a8366004613572565b6116bd565b3480156104b957600080fd5b5061031d611875565b3480156104ce57600080fd5b506104d76119e6565b60405161018391906135b9565b3480156104f057600080fd5b506104f9611a7e565b60405161018391906135cc565b34801561051257600080fd5b50610526610521366004612f69565b611a90565b6040516101839190613619565b34801561053f57600080fd5b506101e561054e36600461362c565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b148061059057506001600160e01b03198216630a85bd0160e11b145b8061059f575061059f82611b68565b92915050565b6000807f82cac545155fcbf147f2a9013809613677ac7d65498556e6d19ce43bcbf6c28483805190602001206040516020016105eb929190918252602082015260400190565b60405160208183030381529060405280519060200120905061060b611b9d565b60405161190160f01b602082015260228101919091526042810182905260620160405160208183030381529060405280519060200120915050919050565b6000806106768460405160200161066291815260200190565b6040516020818303038152906040526105a5565b905060006106848285611cc4565b905061068f81610a4d565b156106a65750630b135d3f60e11b915061059f9050565b3360006106b1611ce8565b6001600160a01b03841660009081526006919091016020526040902090506106d98183611d0c565b8061070957506106e881611d2e565b6001148015610709575060006106fe8282611d38565b6001600160a01b0316145b6107665760405162461bcd60e51b8152602060048201526024808201527f4163636f756e743a2063616c6c6572206e6f7420617070726f7665642074617260448201526333b2ba1760e11b60648201526084015b60405180910390fd5b61076f836110a1565b1561077f57630b135d3f60e11b94505b5050505092915050565b6000610793611ce8565b6001600160a01b0384166000908152600491909101602052604090205460ff16156107c05750600161059f565b60006107ca611ce8565b6001600160a01b0385166000908152600591909101602090815260408083208151606081018352815481526001909101546001600160801b0380821694830194909452600160801b9004909216908201529150610825611ce8565b6006016000866001600160a01b03166001600160a01b0316815260200190815260200160002090504282602001516001600160801b03161180610875575081604001516001600160801b03164210155b80610886575061088481611d2e565b155b156108965760009250505061059f565b60006108ad6108a86060870187613694565b611d44565b905060006108ba83611d2e565b60011480156108db575060006108d08482611d38565b6001600160a01b0316145b90506324f16c0560e11b6001600160e01b03198316016109525760008061090d61090860608a018a613694565b611d7e565b9150915082610933576109208583611d0c565b610933576000965050505050505061059f565b855181111561094b576000965050505050505061059f565b5050610a40565b635c0f12eb60e11b6001600160e01b0319831601610a335760008061098261097d60608a018a613694565b611de3565b5091509150826109e25760005b82518110156109e0576109c48382815181106109ad576109ad6136da565b602002602001015187611d0c90919063ffffffff16565b6109d857600097505050505050505061059f565b60010161098f565b505b60005b8251811015610a2b57818181518110610a0057610a006136da565b602002602001015187600001511015610a2357600097505050505050505061059f565b6001016109e5565b505050610a40565b600094505050505061059f565b5060019695505050505050565b6000610a57611ce8565b6001600160a01b03909216600090815260049290920160205250604090205460ff1690565b6000610a86611e30565b610a908484611e99565b9050610a9b82611fde565b9392505050565b610aaa611532565b6001600160a01b0316336001600160a01b03161480610acd5750610acd33610a4d565b610ae95760405162461bcd60e51b815260040161075d906136f0565b610af161202b565b8481148015610aff57508483145b610b4b5760405162461bcd60e51b815260206004820152601d60248201527f4163636f756e743a2077726f6e67206172726179206c656e677468732e000000604482015260640161075d565b60005b85811015610c0057610bf7878783818110610b6b57610b6b6136da565b9050602002016020810190610b809190612f69565b868684818110610b9257610b926136da565b90506020020135858585818110610bab57610bab6136da565b9050602002810190610bbd9190613694565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061211192505050565b50600101610b4e565b50505050505050565b610c11611532565b6001600160a01b031663b760faf934306040518363ffffffff1660e01b8152600401610c3d91906133c4565b6000604051808303818588803b158015610c5657600080fd5b505af1158015610c6a573d6000803e3d6000fd5b5050505050565b610c79612182565b610c81611532565b6001600160a01b031663205c287883836040518363ffffffff1660e01b8152600401610cae929190613731565b600060405180830381600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b505050505050565b6000610cf36020850185612f69565b905042610d0660e0860160c08701613761565b6001600160801b031611158015610d355750610d29610100850160e08601613761565b6001600160801b031642105b610d6b5760405162461bcd60e51b8152602060048201526007602482015266085c195c9a5bd960ca1b604482015260640161075d565b600080610d798686866113f2565b9150915081610db35760405162461bcd60e51b815260040161075d906020808252600490820152632173696760e01b604082015260600190565b6001610dbd611ce8565b610100880135600090815260079190910160209081526040808320805460ff1916941515949094179093559091610df99190890190890161378d565b60ff161115610e26576000610e14604088016020890161378d565b60ff166001149050610c0084826121c0565b610e2f83610a4d565b15610e645760405162461bcd60e51b815260206004820152600560248201526430b236b4b760d91b604482015260640161075d565b610e7983610e70611ce8565b60020190612295565b50604051806060016040528087606001358152602001876080016020810190610ea29190613761565b6001600160801b03168152602001610ec060c0890160a08a01613761565b6001600160801b03169052610ed3611ce8565b6001600160a01b03851660009081526005919091016020908152604080832084518155918401519301516001600160801b03908116600160801b02931692909217600190920191909155610f49610f28611ce8565b6001600160a01b0386166000908152600691909101602052604090206122aa565b805190915060005b81811015610fb357610fa0838281518110610f6e57610f6e6136da565b6020026020010151610f7e611ce8565b6001600160a01b038916600090815260069190910160205260409020906122b7565b50610fac6001826137be565b9050610f51565b50610fc160408901896137d1565b9050905060005b818110156110425761102f610fe060408b018b6137d1565b83818110610ff057610ff06136da565b90506020020160208101906110059190612f69565b61100d611ce8565b6001600160a01b03891660009081526006919091016020526040902090612295565b5061103b6001826137be565b9050610fc8565b5061104c886122cc565b846001600160a01b0316836001600160a01b03167ff21d10c26e35863a8df291aca54181ee8c4a3bc8e00246c3f7a5a14b69d826a78a60405161108f91906138ab565b60405180910390a35050505050505050565b6000806110ac611ce8565b6001600160a01b038416600090815260059190910160209081526040918290208251606081018452815481526001909101546001600160801b03808216938301849052600160801b9091041692810192909252909150421080159061111d575080604001516001600160801b031642105b8015610a9b57506000611152611131611ce8565b6001600160a01b038616600090815260069190910160205260409020611d2e565b119392505050565b60606000611171611169611ce8565b6002016122aa565b80519091506000805b82811015611202576111a4848281518110611197576111976136da565b60200260200101516110a1565b156111bb57816111b381613996565b9250506111f0565b60008482815181106111cf576111cf6136da565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6111fb6001826137be565b905061117a565b50806001600160401b0381111561121b5761121b612d44565b60405190808252806020026020018201604052801561125457816020015b611241612cd0565b8152602001906001900390816112395790505b5093506000805b838110156113995760006001600160a01b0316858281518110611280576112806136da565b60200260200101516001600160a01b0316146113875760008582815181106112aa576112aa6136da565b6020026020010151905060006112be611ce8565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611328610f28611ce8565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b031681525088858061136790613996565b965081518110611379576113796136da565b602002602001018190525050505b6113926001826137be565b905061125b565b505050505090565b6113a9612361565b6113e65760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015260640161075d565b6113ef81612379565b50565b60008061140861140186612460565b85856125a4565b9050611412611ce8565b6101008601356000908152600791909101602052604090205460ff1615801561143f575061143f81610a4d565b9150935093915050565b6060816001600160401b0381111561146357611463612d44565b60405190808252806020026020018201604052801561149657816020015b60608152602001906001900390816114815790505b50905060005b8281101561152b57611506308585848181106114ba576114ba6136da565b90506020028101906114cc9190613694565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125fe92505050565b828281518110611518576115186136da565b602090810291909101015260010161149c565b5092915050565b60008061153d612623565b546001600160a01b03169050801561155457919050565b7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278991505090565b611583611532565b6001600160a01b0316336001600160a01b031614806115a657506115a633610a4d565b6115c25760405162461bcd60e51b815260040161075d906136f0565b6115ca61202b565b610c6a848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061211192505050565b611613612182565b8061161c612623565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6000611647611532565b604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b891906139af565b905090565b60006116c7612647565b5460ff16905060006116d7612647565b54610100900460ff16905080158080156116f4575060018360ff16105b8061171357506117033061266b565b15801561171357508260ff166001145b6117765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161075d565b6001611780612647565b805460ff191660ff9290921691909117905580156117b95760016117a2612647565b80549115156101000261ff00199092169190911790555b6117f98686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061267a92505050565b611801612623565b600101819055506118138660016121c0565b8015610cdc576000611823612647565b80549115156101000261ff0019909216919091179055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b60606000611884611169611ce8565b8051909150806001600160401b038111156118a1576118a1612d44565b6040519080825280602002602001820160405280156118da57816020015b6118c7612cd0565b8152602001906001900390816118bf5790505b50925060005b818110156119e05760008382815181106118fc576118fc6136da565b602002602001015190506000611910611ce8565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a08101909452918352909250810161197a610f28611ce8565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b03168152508684815181106119bf576119bf6136da565b602002602001018190525050506001816119d991906137be565b90506118e0565b50505090565b60606119f06126ad565b80546119fb906139c8565b80601f0160208091040260200160405190810160405280929190818152602001828054611a27906139c8565b8015611a745780601f10611a4957610100808354040283529160200191611a74565b820191906000526020600020905b815481529060010190602001808311611a5757829003601f168201915b5050505050905090565b60606116b8611a8b611ce8565b6122aa565b611a98612cd0565b6000611aa2611ce8565b6001600160a01b038416600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611b2d611b0c611ce8565b6001600160a01b0387166000908152600691909101602052604090206122aa565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250915050919050565b60006001600160e01b03198216630271189760e51b148061059f57506301ffc9a760e01b6001600160e01b031983161461059f565b6000306001600160a01b037f000000000000000000000000ffd4505b3452dc22f8473616d50503ba9e1710ac16148015611bf657507f0000000000000000000000000000000000000000000000000000000000007a6946145b15611c2057507fbcdadf6444930a967ffda04923d78c49b3dd65df3ed39abb04a1e3eb1190553790565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527ff0729608244859f656d32ae4cbc6b0367695d68d8e941a28f5e2d33c6d5182dd828401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000806000611cd385856126d1565b91509150611ce081612716565b509392505050565b7f3181e78fc1b109bc611fd2406150bf06e33faa75f71cba12c3e1fd670f2def0090565b6001600160a01b03811660009081526001830160205260408120541515610a9b565b600061059f825490565b6000610a9b838361285b565b60006004821015611d675760405162461bcd60e51b815260040161075d906139fc565b611d75600460008486613a1b565b610a9b91613a45565b6000806044831015611da25760405162461bcd60e51b815260040161075d906139fc565b611db0602460048587613a1b565b810190611dbd9190612f69565b9150611dcd604460248587613a1b565b810190611dda9190613a75565b90509250929050565b606080806064841015611e085760405162461bcd60e51b815260040161075d906139fc565b611e158460048188613a1b565b810190611e229190613b0d565b919790965090945092505050565b611e38611532565b6001600160a01b0316336001600160a01b031614611e975760405162461bcd60e51b815260206004820152601c60248201527b1858d8dbdd5b9d0e881b9bdd08199c9bdb48115b9d1c9e541bda5b9d60221b604482015260640161075d565b565b7b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6000908152601c829052603c81206000611f17611eda610140870187613694565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611cc49050565b9050611f238186610789565b611f325760019250505061059f565b6000611f3c611ce8565b6001600160a01b03929092166000908152600590920160209081526040808420815160608082018452825482526001909201546001600160801b0380821683870152600160801b8204908116928501929092528351928301845295825265ffffffffffff8087169483019490945292831691015260d09290921b6001600160d01b03191660a09290921b65ffffffffffff60a01b169190911795945050505050565b80156113ef57604051600090339060001990849084818181858888f193505050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6a565b60405163c3c5a54760e01b81527f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b906001600160a01b0382169063c3c5a547906120799030906004016133c4565b602060405180830381865afa158015612096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ba9190613bf2565b6113ef57806001600160a01b03166383a03f8c6120d5612623565b600101546040518263ffffffff1660e01b81526004016120f791815260200190565b600060405180830381600087803b158015610c5657600080fd5b60606000846001600160a01b0316848460405161212e9190613c14565b60006040518083038185875af1925050503d806000811461216b576040519150601f19603f3d011682016040523d82523d6000602084013e612170565b606091505b509250905080611ce057815160208301fd5b61218b33610a4d565b611e975760405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015260640161075d565b6121ca8282612885565b6001600160a01b037f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b163b15612291578015612259577f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b6001600160a01b0316630b61e12b83612238612623565b600101546040518363ffffffff1660e01b8152600401610cae929190613731565b7f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b6001600160a01b0316639387a38083612238612623565b5050565b6000610a9b836001600160a01b038416612934565b60606000610a9b83612983565b6000610a9b836001600160a01b0384166129df565b6001600160a01b037f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b163b156113ef576001600160a01b037f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b16630b61e12b6123386020840184612f69565b612340612623565b600101546040518363ffffffff1660e01b81526004016120f7929190613731565b600061236c33610a4d565b806116b857505030331490565b60006123836126ad565b805461238e906139c8565b80601f01602080910402602001604051908101604052809291908181526020018280546123ba906139c8565b80156124075780601f106123dc57610100808354040283529160200191612407565b820191906000526020600020905b8154815290600101906020018083116123ea57829003601f168201915b50505050509050816124176126ad565b906124229082613c7d565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051612454929190613d3c565b60405180910390a15050565b60607f3fd4a1a1a267c84185e3b7eecd57c68783c0581d538b9d6e5f23e4670497c1e96124906020840184612f69565b6124a0604085016020860161378d565b6124ad60408601866137d1565b6040516020016124be929190613d6a565b60408051601f19818403018152919052805160209091012060608601356124eb60a0880160808901613761565b6124fb60c0890160a08a01613761565b61250b60e08a0160c08b01613761565b61251c6101008b0160e08c01613761565b60408051602081019a909a526001600160a01b039098169789019790975260ff9095166060880152608087019390935260a08601919091526001600160801b0390811660c086015290811660e0850152908116610100848101919091529116610120830152830135610140820152610160016040516020818303038152906040529050919050565b60006125f683838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050875160208901206125f092509050612ad2565b90611cc4565b949350505050565b6060610a9b8383604051806060016040528060278152602001613e1060279139612aff565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b54830090565b7f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee030090565b6001600160a01b03163b151590565b6000828260405160200161268f929190613dac565b60405160208183030381529060405280519060200120905092915050565b7f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b60008082516041036127075760208301516040840151606085015160001a6126fb87828585612bdd565b9450945050505061270f565b506000905060025b9250929050565b600081600481111561272a5761272a613dd0565b036127325750565b600181600481111561274657612746613dd0565b0361278e5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161075d565b60028160048111156127a2576127a2613dd0565b036127ef5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161075d565b600381600481111561280357612803613dd0565b036113ef5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161075d565b6000826000018281548110612872576128726136da565b9060005260206000200154905092915050565b8061288e611ce8565b6001600160a01b038416600090815260049190910160205260409020805460ff191691151591909117905580156128d7576128d1826128cb611ce8565b90612295565b506128eb565b6128e9826128e3611ce8565b906122b7565b505b816001600160a01b03167f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a1113382604051612928911515815260200190565b60405180910390a25050565b600081815260018301602052604081205461297b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059f565b50600061059f565b6060816000018054806020026020016040519081016040528092919081815260200182805480156129d357602002820191906000526020600020905b8154815260200190600101908083116129bf575b50505050509050919050565b60008181526001830160205260408120548015612ac8576000612a03600183613de6565b8554909150600090612a1790600190613de6565b9050818114612a7c576000866000018281548110612a3757612a376136da565b9060005260206000200154905080876000018481548110612a5a57612a5a6136da565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a8d57612a8d613df9565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059f565b600091505061059f565b600061059f612adf611b9d565b8360405161190160f01b8152600281019290925260228201526042902090565b6060612b0a8461266b565b8015612b1c5750612b1a3361266b565b155b612b685760405162461bcd60e51b815260206004820152601e60248201527f416464726573733a20696e76616c69642064656c65676174652063616c6c0000604482015260640161075d565b600080856001600160a01b031685604051612b839190613c14565b600060405180830381855af49150503d8060008114612bbe576040519150601f19603f3d011682016040523d82523d6000602084013e612bc3565b606091505b5091509150612bd3828286612c97565b9695505050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612c0a5750600090506003612c8e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c5e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c8757600060019250925050612c8e565b9150600090505b94509492505050565b60608315612ca6575081610a9b565b825115612cb65782518084602001fd5b8160405162461bcd60e51b815260040161075d91906135b9565b6040518060a0016040528060006001600160a01b03168152602001606081526020016000815260200160006001600160801b0316815260200160006001600160801b031681525090565b600060208284031215612d2c57600080fd5b81356001600160e01b031981168114610a9b57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612d8257612d82612d44565b604052919050565b60006001600160401b03831115612da357612da3612d44565b612db6601f8401601f1916602001612d5a565b9050828152838383011115612dca57600080fd5b828260208301376000602084830101529392505050565b600082601f830112612df257600080fd5b610a9b83833560208501612d8a565b600060208284031215612e1357600080fd5b81356001600160401b03811115612e2957600080fd5b6125f684828501612de1565b6001600160a01b03811681146113ef57600080fd5b8035612e5581612e35565b919050565b60008060008060808587031215612e7057600080fd5b8435612e7b81612e35565b93506020850135612e8b81612e35565b92506040850135915060608501356001600160401b03811115612ead57600080fd5b612eb987828801612de1565b91505092959194509250565b60008060408385031215612ed857600080fd5b8235915060208301356001600160401b03811115612ef557600080fd5b612f0185828601612de1565b9150509250929050565b60006101608284031215612f1e57600080fd5b50919050565b60008060408385031215612f3757600080fd5b8235612f4281612e35565b915060208301356001600160401b03811115612f5d57600080fd5b612f0185828601612f0b565b600060208284031215612f7b57600080fd5b8135610a9b81612e35565b600080600060608486031215612f9b57600080fd5b83356001600160401b03811115612fb157600080fd5b612fbd86828701612f0b565b9660208601359650604090950135949350505050565b60008083601f840112612fe557600080fd5b5081356001600160401b03811115612ffc57600080fd5b6020830191508360208260051b850101111561270f57600080fd5b6000806000806000806060878903121561303057600080fd5b86356001600160401b038082111561304757600080fd5b6130538a838b01612fd3565b9098509650602089013591508082111561306c57600080fd5b6130788a838b01612fd3565b9096509450604089013591508082111561309157600080fd5b5061309e89828a01612fd3565b979a9699509497509295939492505050565b600080604083850312156130c357600080fd5b82356130ce81612e35565b946020939093013593505050565b60008083601f8401126130ee57600080fd5b5081356001600160401b0381111561310557600080fd5b60208301915083602082850101111561270f57600080fd5b60008060006040848603121561313257600080fd5b83356001600160401b038082111561314957600080fd5b90850190610120828803121561315e57600080fd5b9093506020850135908082111561317457600080fd5b50613181868287016130dc565b9497909650939450505050565b6001600160801b03169052565b80516001600160a01b03908116835260208083015160a082860181905281519086018190526000939183019290849060c08801905b808310156131f2578551851682529483019460019290920191908301906131d0565b506040870151604089015260608701519450613211606089018661318e565b60808701519450613225608089018661318e565b979650505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561328757603f1988860301845261327585835161319b565b94509285019290850190600101613259565b5092979650505050505050565b6000602082840312156132a657600080fd5b81356001600160401b038111156132bc57600080fd5b8201601f810184136132cd57600080fd5b6125f684823560208401612d8a565b600080602083850312156132ef57600080fd5b82356001600160401b0381111561330557600080fd5b61331185828601612fd3565b90969095509350505050565b60005b83811015613338578181015183820152602001613320565b50506000910152565b6000815180845261335981602086016020860161331d565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561328757603f198886030184526133b2858351613341565b94509285019290850190600101613396565b6001600160a01b0391909116815260200190565b600080600080606085870312156133ee57600080fd5b84356133f981612e35565b93506020850135925060408501356001600160401b0381111561341b57600080fd5b613427878288016130dc565b95989497509550505050565b60006001600160401b0382111561344c5761344c612d44565b5060051b60200190565b600082601f83011261346757600080fd5b8135602061347c61347783613433565b612d5a565b8083825260208201915060208460051b87010193508684111561349e57600080fd5b602086015b848110156134ba57803583529183019183016134a3565b509695505050505050565b600080600080600060a086880312156134dd57600080fd5b85356134e881612e35565b945060208601356134f881612e35565b935060408601356001600160401b038082111561351457600080fd5b61352089838a01613456565b9450606088013591508082111561353657600080fd5b61354289838a01613456565b9350608088013591508082111561355857600080fd5b5061356588828901612de1565b9150509295509295909350565b60008060006040848603121561358757600080fd5b833561359281612e35565b925060208401356001600160401b038111156135ad57600080fd5b613181868287016130dc565b602081526000610a9b6020830184613341565b6020808252825182820181905260009190848201906040850190845b8181101561360d5783516001600160a01b0316835292840192918401916001016135e8565b50909695505050505050565b602081526000610a9b602083018461319b565b600080600080600060a0868803121561364457600080fd5b853561364f81612e35565b9450602086013561365f81612e35565b9350604086013592506060860135915060808601356001600160401b0381111561368857600080fd5b61356588828901612de1565b6000808335601e198436030181126136ab57600080fd5b8301803591506001600160401b038211156136c557600080fd5b60200191503681900382131561270f57600080fd5b634e487b7160e01b600052603260045260246000fd5b60208082526021908201527f4163636f756e743a206e6f742061646d696e206f7220456e747279506f696e746040820152601760f91b606082015260800190565b6001600160a01b03929092168252602082015260400190565b80356001600160801b0381168114612e5557600080fd5b60006020828403121561377357600080fd5b610a9b8261374a565b803560ff81168114612e5557600080fd5b60006020828403121561379f57600080fd5b610a9b8261377c565b634e487b7160e01b600052601160045260246000fd5b8082018082111561059f5761059f6137a8565b6000808335601e198436030181126137e857600080fd5b8301803591506001600160401b0382111561380257600080fd5b6020019150600581901b360382131561270f57600080fd5b6000808335601e1984360301811261383157600080fd5b83016020810192503590506001600160401b0381111561385057600080fd5b8060051b360382131561270f57600080fd5b8183526000602080850194508260005b858110156138a057813561388581612e35565b6001600160a01b031687529582019590820190600101613872565b509495945050505050565b602081526138cc602082016138bf84612e4a565b6001600160a01b03169052565b60006138da6020840161377c565b60ff81166040840152506138f1604084018461381a565b61012080606086015261390961014086018385613862565b9250606086013560808601526139216080870161374a565b915061393060a086018361318e565b61393c60a0870161374a565b915061394b60c086018361318e565b61395760c0870161374a565b915061396660e086018361318e565b61397260e0870161374a565b91506101006139838187018461318e565b9590950135939094019290925250919050565b6000600182016139a8576139a86137a8565b5060010190565b6000602082840312156139c157600080fd5b5051919050565b600181811c908216806139dc57607f821691505b602082108103612f1e57634e487b7160e01b600052602260045260246000fd5b602080825260059082015264214461746160d81b604082015260600190565b60008085851115613a2b57600080fd5b83861115613a3857600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015613a6d5780818660040360031b1b83161692505b505092915050565b600060208284031215613a8757600080fd5b5035919050565b600082601f830112613a9f57600080fd5b81356020613aaf61347783613433565b82815260059290921b84018101918181019086841115613ace57600080fd5b8286015b848110156134ba5780356001600160401b03811115613af15760008081fd5b613aff8986838b0101612de1565b845250918301918301613ad2565b600080600060608486031215613b2257600080fd5b83356001600160401b0380821115613b3957600080fd5b818601915086601f830112613b4d57600080fd5b81356020613b5d61347783613433565b82815260059290921b8401810191818101908a841115613b7c57600080fd5b948201945b83861015613ba3578535613b9481612e35565b82529482019490820190613b81565b97505087013592505080821115613bb957600080fd5b613bc587838801613456565b93506040860135915080821115613bdb57600080fd5b50613be886828701613a8e565b9150509250925092565b600060208284031215613c0457600080fd5b81518015158114610a9b57600080fd5b60008251613c2681846020870161331d565b9190910192915050565b601f821115613c78576000816000526020600020601f850160051c81016020861015613c595750805b601f850160051c820191505b81811015610cdc57828155600101613c65565b505050565b81516001600160401b03811115613c9657613c96612d44565b613caa81613ca484546139c8565b84613c30565b602080601f831160018114613cdf5760008415613cc75750858301515b600019600386901b1c1916600185901b178555610cdc565b600085815260208120601f198616915b82811015613d0e57888601518255948401946001909101908401613cef565b5085821015613d2c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613d4f6040830185613341565b8281036020840152613d618185613341565b95945050505050565b60008184825b85811015613da1578135613d8381612e35565b6001600160a01b031683526020928301929190910190600101613d70565b509095945050505050565b6001600160a01b03831681526040602082018190526000906125f690830184613341565b634e487b7160e01b600052602160045260246000fd5b8181038181111561059f5761059f6137a8565b634e487b7160e01b600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220288856fb3bf01440d93687852b8b2acc762d686c2f4c0e163815356d4bf1ce1864736f6c63430008170033"; diff --git a/src/test/smart-wallet/utils/AABenchmarkPrepare.sol b/src/test/smart-wallet/utils/AABenchmarkPrepare.sol index 2919bd375..146be270c 100644 --- a/src/test/smart-wallet/utils/AABenchmarkPrepare.sol +++ b/src/test/smart-wallet/utils/AABenchmarkPrepare.sol @@ -2,14 +2,12 @@ pragma solidity ^0.8.0; // Test utils -import "../../utils/BaseTest.sol"; +import { BaseTest } from "../../utils/BaseTest.sol"; // Account Abstraction setup for smart wallets. import { IEntryPoint } from "contracts/prebuilts/account/utils/Entrypoint.sol"; - +import { Strings } from "contracts/lib/Strings.sol"; import { AccountFactory } from "contracts/prebuilts/account/non-upgradeable/AccountFactory.sol"; -import "contracts/lib/TWStrings.sol"; - import "forge-std/Test.sol"; contract AABenchmarkPrepare is BaseTest { @@ -32,24 +30,24 @@ contract AABenchmarkPrepare is BaseTest { string memory accountFactoryAddressString = string.concat( "address constant THIRDWEB_ACCOUNT_FACTORY_ADDRESS = ", - TWStrings.toHexStringChecksummed(accountFactoryAddress), + Strings.toHexStringChecksummed(accountFactoryAddress), ";" ); string memory accountFactoryBytecodeString = string.concat( 'bytes constant THIRDWEB_ACCOUNT_FACTORY_BYTECODE = hex"', - TWStrings.toHexStringNoPrefix(accountFactoryBytecode), + Strings.toHexStringNoPrefix(accountFactoryBytecode), '"', ";" ); string memory accountImplAddressString = string.concat( "address constant THIRDWEB_ACCOUNT_IMPL_ADDRESS = ", - TWStrings.toHexStringChecksummed(accountImplAddress), + Strings.toHexStringChecksummed(accountImplAddress), ";" ); string memory accountImplBytecodeString = string.concat( 'bytes constant THIRDWEB_ACCOUNT_IMPL_BYTECODE = hex"', - TWStrings.toHexStringNoPrefix(accountImplBytecode), + Strings.toHexStringNoPrefix(accountImplBytecode), '"', ";" ); diff --git a/src/test/smart-wallet/utils/AABenchmarkTest.t.sol b/src/test/smart-wallet/utils/AABenchmarkTest.t.sol index 03f7fa9ed..0ca4622b1 100644 --- a/src/test/smart-wallet/utils/AABenchmarkTest.t.sol +++ b/src/test/smart-wallet/utils/AABenchmarkTest.t.sol @@ -15,11 +15,7 @@ contract ProfileThirdwebAccount is AAGasProfileBase { setAccount(); } - function fillData( - address _to, - uint256 _value, - bytes memory _data - ) internal view override returns (bytes memory) { + function fillData(address _to, uint256 _value, bytes memory _data) internal view override returns (bytes memory) { return abi.encodeWithSelector(ThirdwebAccount.execute.selector, _to, _value, _data); } diff --git a/src/test/smart-wallet/utils/AATestBase.sol b/src/test/smart-wallet/utils/AATestBase.sol index 48da6dfe1..74947587f 100644 --- a/src/test/smart-wallet/utils/AATestBase.sol +++ b/src/test/smart-wallet/utils/AATestBase.sol @@ -100,11 +100,7 @@ abstract contract AAGasProfileBase is Test { signature = abi.encodePacked(r, s, v); } - function executeUserOp( - UserOperation memory _op, - string memory _test, - uint256 _value - ) internal { + function executeUserOp(UserOperation memory _op, string memory _test, uint256 _value) internal { UserOperation[] memory ops = new UserOperation[](1); ops[0] = _op; uint256 eth_before; @@ -273,11 +269,7 @@ abstract contract AAGasProfileBase is Test { function getDummySig(UserOperation memory _op) internal pure virtual returns (bytes memory); - function fillData( - address _to, - uint256 _amount, - bytes memory _data - ) internal view virtual returns (bytes memory); + function fillData(address _to, uint256 _amount, bytes memory _data) internal view virtual returns (bytes memory); function getAccountAddr(address _owner) internal view virtual returns (IAccount _account); diff --git a/src/test/split-BTT/set-contract-uri/setContractURI.t.sol b/src/test/split-BTT/set-contract-uri/setContractURI.t.sol index 4a9da18b4..af3cc85d1 100644 --- a/src/test/split-BTT/set-contract-uri/setContractURI.t.sol +++ b/src/test/split-BTT/set-contract-uri/setContractURI.t.sol @@ -53,9 +53,9 @@ contract SplitTest_SetContractURI is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); splitContract.setContractURI(_contractURI); diff --git a/src/test/staking/EditionStake.t.sol b/src/test/staking/EditionStake.t.sol index 31e25d42d..0df3b9e91 100644 --- a/src/test/staking/EditionStake.t.sol +++ b/src/test/staking/EditionStake.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { EditionStake } from "contracts/prebuilts/staking/EditionStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract EditionStakeTest is BaseTest { diff --git a/src/test/staking/EditionStake_EthReward.t.sol b/src/test/staking/EditionStake_EthReward.t.sol index 784cb82a2..2f829cdb9 100644 --- a/src/test/staking/EditionStake_EthReward.t.sol +++ b/src/test/staking/EditionStake_EthReward.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { EditionStake } from "contracts/prebuilts/staking/EditionStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract EditionStakeEthRewardTest is BaseTest { diff --git a/src/test/staking/NFTStake.t.sol b/src/test/staking/NFTStake.t.sol index 9518a5429..8acd02214 100644 --- a/src/test/staking/NFTStake.t.sol +++ b/src/test/staking/NFTStake.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { NFTStake } from "contracts/prebuilts/staking/NFTStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract NFTStakeTest is BaseTest { diff --git a/src/test/staking/NFTStake_EthReward.t.sol b/src/test/staking/NFTStake_EthReward.t.sol index de5d5e778..459f111e5 100644 --- a/src/test/staking/NFTStake_EthReward.t.sol +++ b/src/test/staking/NFTStake_EthReward.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { NFTStake } from "contracts/prebuilts/staking/NFTStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract NFTStakeEthRewardTest is BaseTest { diff --git a/src/test/staking/TokenStake.t.sol b/src/test/staking/TokenStake.t.sol index 4cbed5fc8..f2a7d63ae 100644 --- a/src/test/staking/TokenStake.t.sol +++ b/src/test/staking/TokenStake.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { TokenStake } from "contracts/prebuilts/staking/TokenStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract TokenStakeTest is BaseTest { diff --git a/src/test/staking/TokenStake_EthReward.t.sol b/src/test/staking/TokenStake_EthReward.t.sol index 14c01fa59..9cef37deb 100644 --- a/src/test/staking/TokenStake_EthReward.t.sol +++ b/src/test/staking/TokenStake_EthReward.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { TokenStake } from "contracts/prebuilts/staking/TokenStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract TokenStakeEthRewardTest is BaseTest { diff --git a/src/test/staking/TokenStake_EthStake.t.sol b/src/test/staking/TokenStake_EthStake.t.sol index 58ff1df06..8630d08a9 100644 --- a/src/test/staking/TokenStake_EthStake.t.sol +++ b/src/test/staking/TokenStake_EthStake.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import { TokenStake } from "contracts/prebuilts/staking/TokenStake.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; contract TokenStakeEthStakeTest is BaseTest { diff --git a/src/test/token/TokenERC1155.t.sol b/src/test/token/TokenERC1155.t.sol index 0cc4cc248..ced59d548 100644 --- a/src/test/token/TokenERC1155.t.sol +++ b/src/test/token/TokenERC1155.t.sol @@ -4,13 +4,12 @@ pragma solidity ^0.8.0; import { TokenERC1155, IPlatformFee } from "contracts/prebuilts/token/TokenERC1155.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract TokenERC1155Test is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event TokensMinted(address indexed mintedTo, uint256 indexed tokenIdMinted, string uri, uint256 quantityMinted); event TokensMintedWithSignature( @@ -83,11 +82,10 @@ contract TokenERC1155Test is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(TokenERC1155.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC1155.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = bytes.concat( abi.encode( typehashMintRequest, @@ -410,9 +408,9 @@ contract TokenERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -554,9 +552,9 @@ contract TokenERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -594,9 +592,9 @@ contract TokenERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -657,9 +655,9 @@ contract TokenERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -843,9 +841,9 @@ contract TokenERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -854,9 +852,9 @@ contract TokenERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -895,9 +893,9 @@ contract TokenERC1155Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); diff --git a/src/test/token/TokenERC20.t.sol b/src/test/token/TokenERC20.t.sol index cf368ff67..03e44d81c 100644 --- a/src/test/token/TokenERC20.t.sol +++ b/src/test/token/TokenERC20.t.sol @@ -4,13 +4,12 @@ pragma solidity ^0.8.0; import { TokenERC20 } from "contracts/prebuilts/token/TokenERC20.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract TokenERC20Test is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event TokensMinted(address indexed mintedTo, uint256 quantityMinted); event TokensMintedWithSignature( @@ -80,11 +79,10 @@ contract TokenERC20Test is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(TokenERC20.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC20.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, @@ -324,9 +322,9 @@ contract TokenERC20Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -374,9 +372,9 @@ contract TokenERC20Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -415,9 +413,9 @@ contract TokenERC20Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); diff --git a/src/test/token/TokenERC721.t.sol b/src/test/token/TokenERC721.t.sol index e75bda220..41732cff6 100644 --- a/src/test/token/TokenERC721.t.sol +++ b/src/test/token/TokenERC721.t.sol @@ -4,13 +4,12 @@ pragma solidity ^0.8.0; import { TokenERC721 } from "contracts/prebuilts/token/TokenERC721.sol"; // Test imports -import "contracts/lib/TWStrings.sol"; + import "../utils/BaseTest.sol"; import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; -import "@openzeppelin/contracts/utils/Strings.sol"; contract TokenERC721Test is BaseTest { - using StringsUpgradeable for uint256; + using Strings for uint256; event TokensMinted(address indexed mintedTo, uint256 indexed tokenIdMinted, string uri); event TokensMintedWithSignature( @@ -81,11 +80,10 @@ contract TokenERC721Test is BaseTest { _signature = signMintRequest(_mintrequest, privateKey); } - function signMintRequest(TokenERC721.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC721.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, @@ -299,9 +297,9 @@ contract TokenERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -456,9 +454,9 @@ contract TokenERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -496,9 +494,9 @@ contract TokenERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -559,9 +557,9 @@ contract TokenERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -609,9 +607,9 @@ contract TokenERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); @@ -650,9 +648,9 @@ contract TokenERC721Test is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(address(0x1)), 20), + Strings.toHexString(uint160(address(0x1)), 20), " is missing role ", - TWStrings.toHexString(uint256(role), 32) + Strings.toHexString(uint256(role), 32) ) ); vm.prank(address(0x1)); diff --git a/src/test/tokenerc1155-BTT/mint-to/mintTo.t.sol b/src/test/tokenerc1155-BTT/mint-to/mintTo.t.sol index 6877e56c1..b0a8703bb 100644 --- a/src/test/tokenerc1155-BTT/mint-to/mintTo.t.sol +++ b/src/test/tokenerc1155-BTT/mint-to/mintTo.t.sol @@ -87,9 +87,9 @@ contract TokenERC1155Test_MintTo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("MINTER_ROLE")), 32) + Strings.toHexString(uint256(keccak256("MINTER_ROLE")), 32) ) ); tokenContract.mintTo(recipient, type(uint256).max, uri, amount); diff --git a/src/test/tokenerc1155-BTT/mint-with-signature/mintWithSignature.t.sol b/src/test/tokenerc1155-BTT/mint-with-signature/mintWithSignature.t.sol index 83c039706..f39177c8a 100644 --- a/src/test/tokenerc1155-BTT/mint-with-signature/mintWithSignature.t.sol +++ b/src/test/tokenerc1155-BTT/mint-with-signature/mintWithSignature.t.sol @@ -145,11 +145,10 @@ contract TokenERC1155Test_MintWithSignature is BaseTest { vm.stopPrank(); } - function signMintRequest(TokenERC1155.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC1155.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = bytes.concat( abi.encode( typehashMintRequest, diff --git a/src/test/tokenerc1155-BTT/other-functions/other.t.sol b/src/test/tokenerc1155-BTT/other-functions/other.t.sol index fabdc6abf..c95c15dab 100644 --- a/src/test/tokenerc1155-BTT/other-functions/other.t.sol +++ b/src/test/tokenerc1155-BTT/other-functions/other.t.sol @@ -9,6 +9,7 @@ import "@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgra import "@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; +import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; diff --git a/src/test/tokenerc1155-BTT/set-contract-uri/setContractURI.t.sol b/src/test/tokenerc1155-BTT/set-contract-uri/setContractURI.t.sol index 494c6b5b1..4f3739103 100644 --- a/src/test/tokenerc1155-BTT/set-contract-uri/setContractURI.t.sol +++ b/src/test/tokenerc1155-BTT/set-contract-uri/setContractURI.t.sol @@ -55,9 +55,9 @@ contract TokenERC1155Test_SetContractURI is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setContractURI(_contractURI); diff --git a/src/test/tokenerc1155-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol b/src/test/tokenerc1155-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol index e87e02948..552d9d75b 100644 --- a/src/test/tokenerc1155-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol +++ b/src/test/tokenerc1155-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol @@ -58,9 +58,9 @@ contract TokenERC1155Test_SetDefaultRoyaltyInfo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setDefaultRoyaltyInfo(defaultRoyaltyRecipient, defaultRoyaltyBps); diff --git a/src/test/tokenerc1155-BTT/set-flat-platform-fee-info/setFlatPlatformFeeInfo.t.sol b/src/test/tokenerc1155-BTT/set-flat-platform-fee-info/setFlatPlatformFeeInfo.t.sol index 798cbd285..380d65921 100644 --- a/src/test/tokenerc1155-BTT/set-flat-platform-fee-info/setFlatPlatformFeeInfo.t.sol +++ b/src/test/tokenerc1155-BTT/set-flat-platform-fee-info/setFlatPlatformFeeInfo.t.sol @@ -59,9 +59,9 @@ contract TokenERC1155Test_SetFlatPlatformFeeInfo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setFlatPlatformFeeInfo(_platformFeeRecipient, _flatFee); diff --git a/src/test/tokenerc1155-BTT/set-owner/setOwner.t.sol b/src/test/tokenerc1155-BTT/set-owner/setOwner.t.sol index 7f8145f07..00dd0f2ef 100644 --- a/src/test/tokenerc1155-BTT/set-owner/setOwner.t.sol +++ b/src/test/tokenerc1155-BTT/set-owner/setOwner.t.sol @@ -57,9 +57,9 @@ contract TokenERC1155Test_SetOwner is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setOwner(_newOwner); diff --git a/src/test/tokenerc1155-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol b/src/test/tokenerc1155-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol index edeb78fe6..e52402a03 100644 --- a/src/test/tokenerc1155-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol +++ b/src/test/tokenerc1155-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol @@ -58,9 +58,9 @@ contract TokenERC1155Test_SetPlatformFeeInfo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setPlatformFeeInfo(_platformFeeRecipient, _platformFeeBps); diff --git a/src/test/tokenerc1155-BTT/set-platform-fee-type/setPlatformFeeType.t.sol b/src/test/tokenerc1155-BTT/set-platform-fee-type/setPlatformFeeType.t.sol index a8f85ceb4..db96dd310 100644 --- a/src/test/tokenerc1155-BTT/set-platform-fee-type/setPlatformFeeType.t.sol +++ b/src/test/tokenerc1155-BTT/set-platform-fee-type/setPlatformFeeType.t.sol @@ -58,9 +58,9 @@ contract TokenERC1155Test_SetPlatformFeeType is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setPlatformFeeType(_newFeeType); diff --git a/src/test/tokenerc1155-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol b/src/test/tokenerc1155-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol index a8f6b7a1d..2f838241e 100644 --- a/src/test/tokenerc1155-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol +++ b/src/test/tokenerc1155-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol @@ -57,9 +57,9 @@ contract TokenERC1155Test_SetPrimarySaleRecipient is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setPrimarySaleRecipient(_primarySaleRecipient); diff --git a/src/test/tokenerc1155-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol b/src/test/tokenerc1155-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol index a0bd34870..051dd7918 100644 --- a/src/test/tokenerc1155-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol +++ b/src/test/tokenerc1155-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol @@ -68,9 +68,9 @@ contract TokenERC1155Test_SetRoyaltyInfoForToken is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setRoyaltyInfoForToken(tokenId, royaltyRecipientForToken, royaltyBpsForToken); diff --git a/src/test/tokenerc1155-BTT/verify/verify.t.sol b/src/test/tokenerc1155-BTT/verify/verify.t.sol index 7b647cd10..f584f57a8 100644 --- a/src/test/tokenerc1155-BTT/verify/verify.t.sol +++ b/src/test/tokenerc1155-BTT/verify/verify.t.sol @@ -82,11 +82,10 @@ contract TokenERC1155Test_Verify is BaseTest { _mintrequest.uid = bytes32(0); } - function signMintRequest(TokenERC1155.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC1155.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = bytes.concat( abi.encode( typehashMintRequest, diff --git a/src/test/tokenerc20-BTT/mint-with-signature/mintWithSignature.t.sol b/src/test/tokenerc20-BTT/mint-with-signature/mintWithSignature.t.sol index 5a5810ec8..bbe988eb8 100644 --- a/src/test/tokenerc20-BTT/mint-with-signature/mintWithSignature.t.sol +++ b/src/test/tokenerc20-BTT/mint-with-signature/mintWithSignature.t.sol @@ -108,11 +108,10 @@ contract TokenERC20Test_MintWithSignature is BaseTest { vm.stopPrank(); } - function signMintRequest(TokenERC20.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC20.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/tokenerc20-BTT/other-functions/other.t.sol b/src/test/tokenerc20-BTT/other-functions/other.t.sol index 4b0049e06..70b62669e 100644 --- a/src/test/tokenerc20-BTT/other-functions/other.t.sol +++ b/src/test/tokenerc20-BTT/other-functions/other.t.sol @@ -12,11 +12,7 @@ import "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeab import { TWProxy } from "contracts/infra/TWProxy.sol"; contract MyTokenERC20 is TokenERC20 { - function beforeTokenTransfer( - address from, - address to, - uint256 amount - ) external { + function beforeTokenTransfer(address from, address to, uint256 amount) external { _beforeTokenTransfer(from, to, amount); } diff --git a/src/test/tokenerc20-BTT/set-contract-uri/setContractURI.t.sol b/src/test/tokenerc20-BTT/set-contract-uri/setContractURI.t.sol index 29257093a..faccf3f9b 100644 --- a/src/test/tokenerc20-BTT/set-contract-uri/setContractURI.t.sol +++ b/src/test/tokenerc20-BTT/set-contract-uri/setContractURI.t.sol @@ -53,9 +53,9 @@ contract TokenERC20Test_SetContractURI is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setContractURI(_contractURI); diff --git a/src/test/tokenerc20-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol b/src/test/tokenerc20-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol index c36ddc43d..d2a14a7f1 100644 --- a/src/test/tokenerc20-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol +++ b/src/test/tokenerc20-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol @@ -56,9 +56,9 @@ contract TokenERC20Test_SetPlatformFeeInfo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setPlatformFeeInfo(_platformFeeRecipient, _platformFeeBps); diff --git a/src/test/tokenerc20-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol b/src/test/tokenerc20-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol index 06cac7206..070f9bfaf 100644 --- a/src/test/tokenerc20-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol +++ b/src/test/tokenerc20-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol @@ -55,9 +55,9 @@ contract TokenERC20Test_SetPrimarySaleRecipient is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setPrimarySaleRecipient(_primarySaleRecipient); diff --git a/src/test/tokenerc20-BTT/verify/verify.t.sol b/src/test/tokenerc20-BTT/verify/verify.t.sol index 1b3753431..fb54c7868 100644 --- a/src/test/tokenerc20-BTT/verify/verify.t.sol +++ b/src/test/tokenerc20-BTT/verify/verify.t.sol @@ -76,11 +76,10 @@ contract TokenERC20Test_Verify is BaseTest { _mintrequest.uid = bytes32(0); } - function signMintRequest(TokenERC20.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC20.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/tokenerc721-BTT/mint-to/mintTo.t.sol b/src/test/tokenerc721-BTT/mint-to/mintTo.t.sol index fee8e1cb5..4c9900e4c 100644 --- a/src/test/tokenerc721-BTT/mint-to/mintTo.t.sol +++ b/src/test/tokenerc721-BTT/mint-to/mintTo.t.sol @@ -71,9 +71,9 @@ contract TokenERC721Test_MintTo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(keccak256("MINTER_ROLE")), 32) + Strings.toHexString(uint256(keccak256("MINTER_ROLE")), 32) ) ); tokenContract.mintTo(recipient, uri); diff --git a/src/test/tokenerc721-BTT/mint-with-signature/mintWithSignature.t.sol b/src/test/tokenerc721-BTT/mint-with-signature/mintWithSignature.t.sol index 4327e294a..4ad653f7b 100644 --- a/src/test/tokenerc721-BTT/mint-with-signature/mintWithSignature.t.sol +++ b/src/test/tokenerc721-BTT/mint-with-signature/mintWithSignature.t.sol @@ -129,11 +129,10 @@ contract TokenERC721Test_MintWithSignature is BaseTest { vm.stopPrank(); } - function signMintRequest(TokenERC721.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC721.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/tokenerc721-BTT/other-functions/other.t.sol b/src/test/tokenerc721-BTT/other-functions/other.t.sol index e34724815..43a70d662 100644 --- a/src/test/tokenerc721-BTT/other-functions/other.t.sol +++ b/src/test/tokenerc721-BTT/other-functions/other.t.sol @@ -10,6 +10,7 @@ import "@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; +import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { TWProxy } from "contracts/infra/TWProxy.sol"; diff --git a/src/test/tokenerc721-BTT/set-contract-uri/setContractURI.t.sol b/src/test/tokenerc721-BTT/set-contract-uri/setContractURI.t.sol index 031306970..1dc0d8855 100644 --- a/src/test/tokenerc721-BTT/set-contract-uri/setContractURI.t.sol +++ b/src/test/tokenerc721-BTT/set-contract-uri/setContractURI.t.sol @@ -55,9 +55,9 @@ contract TokenERC721Test_SetContractURI is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setContractURI(_contractURI); diff --git a/src/test/tokenerc721-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol b/src/test/tokenerc721-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol index e53caed21..d63175b76 100644 --- a/src/test/tokenerc721-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol +++ b/src/test/tokenerc721-BTT/set-default-royalty-info/setDefaultRoyaltyInfo.t.sol @@ -58,9 +58,9 @@ contract TokenERC721Test_SetDefaultRoyaltyInfo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setDefaultRoyaltyInfo(defaultRoyaltyRecipient, defaultRoyaltyBps); diff --git a/src/test/tokenerc721-BTT/set-owner/setOwner.t.sol b/src/test/tokenerc721-BTT/set-owner/setOwner.t.sol index a260b85f5..1ea57ba2c 100644 --- a/src/test/tokenerc721-BTT/set-owner/setOwner.t.sol +++ b/src/test/tokenerc721-BTT/set-owner/setOwner.t.sol @@ -57,9 +57,9 @@ contract TokenERC721Test_SetOwner is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setOwner(_newOwner); diff --git a/src/test/tokenerc721-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol b/src/test/tokenerc721-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol index 678ae6a23..e2a9b0ab4 100644 --- a/src/test/tokenerc721-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol +++ b/src/test/tokenerc721-BTT/set-platform-fee-info/setPlatformFeeInfo.t.sol @@ -58,9 +58,9 @@ contract TokenERC721Test_SetPlatformFeeInfo is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setPlatformFeeInfo(_platformFeeRecipient, _platformFeeBps); diff --git a/src/test/tokenerc721-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol b/src/test/tokenerc721-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol index d939e6464..325b801ac 100644 --- a/src/test/tokenerc721-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol +++ b/src/test/tokenerc721-BTT/set-primary-sale-recipient/setPrimarySaleRecipient.t.sol @@ -57,9 +57,9 @@ contract TokenERC721Test_SetPrimarySaleRecipient is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setPrimarySaleRecipient(_primarySaleRecipient); diff --git a/src/test/tokenerc721-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol b/src/test/tokenerc721-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol index 305ca1096..f5c5e3b83 100644 --- a/src/test/tokenerc721-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol +++ b/src/test/tokenerc721-BTT/set-royalty-info-for-token/setRoyaltyInfoForToken.t.sol @@ -68,9 +68,9 @@ contract TokenERC721Test_SetRoyaltyInfoForToken is BaseTest { vm.expectRevert( abi.encodePacked( "AccessControl: account ", - TWStrings.toHexString(uint160(caller), 20), + Strings.toHexString(uint160(caller), 20), " is missing role ", - TWStrings.toHexString(uint256(0), 32) + Strings.toHexString(uint256(0), 32) ) ); tokenContract.setRoyaltyInfoForToken(tokenId, royaltyRecipientForToken, royaltyBpsForToken); diff --git a/src/test/tokenerc721-BTT/verify/verify.t.sol b/src/test/tokenerc721-BTT/verify/verify.t.sol index 91d5eadce..2d219b9f0 100644 --- a/src/test/tokenerc721-BTT/verify/verify.t.sol +++ b/src/test/tokenerc721-BTT/verify/verify.t.sol @@ -80,11 +80,10 @@ contract TokenERC721Test_Verify is BaseTest { _mintrequest.uid = bytes32(0); } - function signMintRequest(TokenERC721.MintRequest memory _request, uint256 _privateKey) - internal - view - returns (bytes memory) - { + function signMintRequest( + TokenERC721.MintRequest memory _request, + uint256 _privateKey + ) internal view returns (bytes memory) { bytes memory encodedRequest = abi.encode( typehashMintRequest, _request.to, diff --git a/src/test/utils/BaseTest.sol b/src/test/utils/BaseTest.sol index 8bbf83202..9b89c55e5 100644 --- a/src/test/utils/BaseTest.sol +++ b/src/test/utils/BaseTest.sol @@ -4,18 +4,18 @@ pragma solidity ^0.8.11; import "@std/Test.sol"; import "@ds-test/test.sol"; // import "./Console.sol"; -import "./Wallet.sol"; +import { Wallet } from "./Wallet.sol"; import "./ChainlinkVRF.sol"; -import "../mocks/WETH9.sol"; -import "../mocks/MockERC20.sol"; -import "../mocks/MockERC721.sol"; -import "../mocks/MockERC1155.sol"; +import { WETH9 } from "../mocks/WETH9.sol"; +import { MockERC20, ERC20, IERC20 } from "../mocks/MockERC20.sol"; +import { MockERC721, IERC721 } from "../mocks/MockERC721.sol"; +import { MockERC1155, IERC1155 } from "../mocks/MockERC1155.sol"; import { MockERC721NonBurnable } from "../mocks/MockERC721NonBurnable.sol"; import { MockERC1155NonBurnable } from "../mocks/MockERC1155NonBurnable.sol"; -import "contracts/infra/forwarder/Forwarder.sol"; +import { Forwarder } from "contracts/infra/forwarder/Forwarder.sol"; import { ForwarderEOAOnly } from "contracts/infra/forwarder/ForwarderEOAOnly.sol"; -import "contracts/infra/TWRegistry.sol"; -import "contracts/infra/TWFactory.sol"; +import { TWRegistry } from "contracts/infra/TWRegistry.sol"; +import { TWFactory } from "contracts/infra/TWFactory.sol"; import { Multiwrap } from "contracts/prebuilts/multiwrap/Multiwrap.sol"; import { Pack } from "contracts/prebuilts/pack/Pack.sol"; import { PackVRFDirect } from "contracts/prebuilts/pack/PackVRFDirect.sol"; @@ -34,14 +34,21 @@ import { IContractPublisher } from "contracts/infra/interface/IContractPublisher import { AirdropERC721 } from "contracts/prebuilts/unaudited/airdrop/AirdropERC721.sol"; import { AirdropERC721Claimable } from "contracts/prebuilts/unaudited/airdrop/AirdropERC721Claimable.sol"; import { AirdropERC20 } from "contracts/prebuilts/unaudited/airdrop/AirdropERC20.sol"; -import "contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol"; -import "contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol"; -import "contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol"; +import { AirdropERC20Claimable } from "contracts/prebuilts/unaudited/airdrop/AirdropERC20Claimable.sol"; +import { AirdropERC1155 } from "contracts/prebuilts/unaudited/airdrop/AirdropERC1155.sol"; +import { AirdropERC1155Claimable } from "contracts/prebuilts/unaudited/airdrop/AirdropERC1155Claimable.sol"; import { NFTStake } from "contracts/prebuilts/staking/NFTStake.sol"; import { EditionStake } from "contracts/prebuilts/staking/EditionStake.sol"; import { TokenStake } from "contracts/prebuilts/staking/TokenStake.sol"; import { Mock, MockContract } from "../mocks/Mock.sol"; -import "../mocks/MockContractPublisher.sol"; +import { MockContractPublisher } from "../mocks/MockContractPublisher.sol"; +import { Permissions } from "contracts/extension/Permissions.sol"; +import { PermissionsEnumerable } from "contracts/extension/PermissionsEnumerable.sol"; +import { ERC1155Holder, IERC1155Receiver } from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol"; +import { ERC721Holder, IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; +import { Clones } from "@openzeppelin/contracts/proxy/Clones.sol"; +import { Strings } from "contracts/lib/Strings.sol"; +import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; abstract contract BaseTest is DSTest, Test { string public constant NAME = "NAME"; @@ -138,12 +145,6 @@ abstract contract BaseTest is DSTest, Test { TWFactory(factory).addImplementation(address(new AirdropERC20())); TWFactory(factory).addImplementation(address(new MockContract(bytes32("AirdropERC1155"), 1))); TWFactory(factory).addImplementation(address(new AirdropERC1155())); - TWFactory(factory).addImplementation(address(new MockContract(bytes32("AirdropERC721Claimable"), 1))); - TWFactory(factory).addImplementation(address(new AirdropERC721Claimable())); - TWFactory(factory).addImplementation(address(new MockContract(bytes32("AirdropERC20Claimable"), 1))); - TWFactory(factory).addImplementation(address(new AirdropERC20Claimable())); - TWFactory(factory).addImplementation(address(new MockContract(bytes32("AirdropERC1155Claimable"), 1))); - TWFactory(factory).addImplementation(address(new AirdropERC1155Claimable())); TWFactory(factory).addImplementation( address(new PackVRFDirect(address(weth), eoaForwarder, linkToken, vrfV2Wrapper)) ); @@ -316,55 +317,6 @@ abstract contract BaseTest is DSTest, Test { "AirdropERC1155", abi.encodeCall(AirdropERC1155.initialize, (deployer, CONTRACT_URI, forwarders())) ); - deployContractProxy( - "AirdropERC721Claimable", - abi.encodeCall( - AirdropERC721Claimable.initialize, - ( - deployer, - forwarders(), - address(airdropTokenOwner), - address(erc721), - _airdropTokenIdsERC721, - 1000, - 1, - _airdropMerkleRootERC721 - ) - ) - ); - deployContractProxy( - "AirdropERC1155Claimable", - abi.encodeCall( - AirdropERC1155Claimable.initialize, - ( - deployer, - forwarders(), - address(airdropTokenOwner), - address(erc1155), - _airdropTokenIdsERC1155, - _airdropAmountsERC1155, - 1000, - _airdropWalletClaimCountERC1155, - _airdropMerkleRootERC1155 - ) - ) - ); - deployContractProxy( - "AirdropERC20Claimable", - abi.encodeCall( - AirdropERC20Claimable.initialize, - ( - deployer, - forwarders(), - address(airdropTokenOwner), - address(erc20), - 10_000 ether, - 1000, - 1, - _airdropMerkleRootERC20 - ) - ) - ); deployContractProxy( "NFTStake", abi.encodeCall( @@ -388,10 +340,10 @@ abstract contract BaseTest is DSTest, Test { ); } - function deployContractProxy(string memory _contractType, bytes memory _initializer) - public - returns (address proxyAddress) - { + function deployContractProxy( + string memory _contractType, + bytes memory _initializer + ) public returns (address proxyAddress) { vm.startPrank(deployer); proxyAddress = TWFactory(factory).deployProxy(bytes32(bytes(_contractType)), _initializer); contracts[bytes32(bytes(_contractType))] = proxyAddress; @@ -410,22 +362,14 @@ abstract contract BaseTest is DSTest, Test { wallet = new Wallet(); } - function assertIsOwnerERC721( - address _token, - address _owner, - uint256[] memory _tokenIds - ) internal { + function assertIsOwnerERC721(address _token, address _owner, uint256[] memory _tokenIds) internal { for (uint256 i = 0; i < _tokenIds.length; i += 1) { bool isOwnerOfToken = MockERC721(_token).ownerOf(_tokenIds[i]) == _owner; assertTrue(isOwnerOfToken); } } - function assertIsNotOwnerERC721( - address _token, - address _owner, - uint256[] memory _tokenIds - ) internal { + function assertIsNotOwnerERC721(address _token, address _owner, uint256[] memory _tokenIds) internal { for (uint256 i = 0; i < _tokenIds.length; i += 1) { bool isOwnerOfToken = MockERC721(_token).ownerOf(_tokenIds[i]) == _owner; assertTrue(!isOwnerOfToken); @@ -458,19 +402,11 @@ abstract contract BaseTest is DSTest, Test { } } - function assertBalERC20Eq( - address _token, - address _owner, - uint256 _amount - ) internal { + function assertBalERC20Eq(address _token, address _owner, uint256 _amount) internal { assertEq(MockERC20(_token).balanceOf(_owner), _amount); } - function assertBalERC20Gte( - address _token, - address _owner, - uint256 _amount - ) internal { + function assertBalERC20Gte(address _token, address _owner, uint256 _amount) internal { assertTrue(MockERC20(_token).balanceOf(_owner) >= _amount); } @@ -481,12 +417,11 @@ abstract contract BaseTest is DSTest, Test { } function setupAirdropClaimable() public { - string[] memory inputs = new string[](5); + string[] memory inputs = new string[](3); inputs[0] = "node"; - inputs[1] = "src/test/scripts/generateRoot.ts"; - inputs[2] = Strings.toString(5); - inputs[3] = "0"; - inputs[4] = "0x0000000000000000000000000000000000000000"; + inputs[1] = "src/test/scripts/generateRootAirdrop.ts"; + inputs[2] = Strings.toString(uint256(5)); + bytes memory result = vm.ffi(inputs); bytes32 root = abi.decode(result, (bytes32)); diff --git a/src/test/utils/ChainlinkVRF.sol b/src/test/utils/ChainlinkVRF.sol index 79390589d..cd5eaf76a 100644 --- a/src/test/utils/ChainlinkVRF.sol +++ b/src/test/utils/ChainlinkVRF.sol @@ -2,11 +2,7 @@ pragma solidity ^0.8.0; contract Link { - function transferAndCall( - address, - uint256, - bytes calldata - ) external returns (bool) {} + function transferAndCall(address, uint256, bytes calldata) external returns (bool) {} } contract VRFV2Wrapper { diff --git a/src/test/utils/Console.sol b/src/test/utils/Console.sol index 753b533e0..c8e655ca6 100644 --- a/src/test/utils/Console.sol +++ b/src/test/utils/Console.sol @@ -249,2819 +249,1283 @@ library console { _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); } - function log( - uint256 p0, - uint256 p1, - uint256 p2 - ) internal view { + function log(uint256 p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); } - function log( - uint256 p0, - uint256 p1, - string memory p2 - ) internal view { + function log(uint256 p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); } - function log( - uint256 p0, - uint256 p1, - bool p2 - ) internal view { + function log(uint256 p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); } - function log( - uint256 p0, - uint256 p1, - address p2 - ) internal view { + function log(uint256 p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); } - function log( - uint256 p0, - string memory p1, - uint256 p2 - ) internal view { + function log(uint256 p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); } - function log( - uint256 p0, - string memory p1, - string memory p2 - ) internal view { + function log(uint256 p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); } - function log( - uint256 p0, - string memory p1, - bool p2 - ) internal view { + function log(uint256 p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); } - function log( - uint256 p0, - string memory p1, - address p2 - ) internal view { + function log(uint256 p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); } - function log( - uint256 p0, - bool p1, - uint256 p2 - ) internal view { + function log(uint256 p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); } - function log( - uint256 p0, - bool p1, - string memory p2 - ) internal view { + function log(uint256 p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); } - function log( - uint256 p0, - bool p1, - bool p2 - ) internal view { + function log(uint256 p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); } - function log( - uint256 p0, - bool p1, - address p2 - ) internal view { + function log(uint256 p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); } - function log( - uint256 p0, - address p1, - uint256 p2 - ) internal view { + function log(uint256 p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); } - function log( - uint256 p0, - address p1, - string memory p2 - ) internal view { + function log(uint256 p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); } - function log( - uint256 p0, - address p1, - bool p2 - ) internal view { + function log(uint256 p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); } - function log( - uint256 p0, - address p1, - address p2 - ) internal view { + function log(uint256 p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); } - function log( - string memory p0, - uint256 p1, - uint256 p2 - ) internal view { + function log(string memory p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); } - function log( - string memory p0, - uint256 p1, - string memory p2 - ) internal view { + function log(string memory p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); } - function log( - string memory p0, - uint256 p1, - bool p2 - ) internal view { + function log(string memory p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); } - function log( - string memory p0, - uint256 p1, - address p2 - ) internal view { + function log(string memory p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); } - function log( - string memory p0, - string memory p1, - uint256 p2 - ) internal view { + function log(string memory p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); } - function log( - string memory p0, - string memory p1, - string memory p2 - ) internal view { + function log(string memory p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); } - function log( - string memory p0, - string memory p1, - bool p2 - ) internal view { + function log(string memory p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); } - function log( - string memory p0, - string memory p1, - address p2 - ) internal view { + function log(string memory p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); } - function log( - string memory p0, - bool p1, - uint256 p2 - ) internal view { + function log(string memory p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); } - function log( - string memory p0, - bool p1, - string memory p2 - ) internal view { + function log(string memory p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); } - function log( - string memory p0, - bool p1, - bool p2 - ) internal view { + function log(string memory p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); } - function log( - string memory p0, - bool p1, - address p2 - ) internal view { + function log(string memory p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); } - function log( - string memory p0, - address p1, - uint256 p2 - ) internal view { + function log(string memory p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); } - function log( - string memory p0, - address p1, - string memory p2 - ) internal view { + function log(string memory p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); } - function log( - string memory p0, - address p1, - bool p2 - ) internal view { + function log(string memory p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); } - function log( - string memory p0, - address p1, - address p2 - ) internal view { + function log(string memory p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); } - function log( - bool p0, - uint256 p1, - uint256 p2 - ) internal view { + function log(bool p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); } - function log( - bool p0, - uint256 p1, - string memory p2 - ) internal view { + function log(bool p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); } - function log( - bool p0, - uint256 p1, - bool p2 - ) internal view { + function log(bool p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); } - function log( - bool p0, - uint256 p1, - address p2 - ) internal view { + function log(bool p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); } - function log( - bool p0, - string memory p1, - uint256 p2 - ) internal view { + function log(bool p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); } - function log( - bool p0, - string memory p1, - string memory p2 - ) internal view { + function log(bool p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); } - function log( - bool p0, - string memory p1, - bool p2 - ) internal view { + function log(bool p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); } - function log( - bool p0, - string memory p1, - address p2 - ) internal view { + function log(bool p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); } - function log( - bool p0, - bool p1, - uint256 p2 - ) internal view { + function log(bool p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); } - function log( - bool p0, - bool p1, - string memory p2 - ) internal view { + function log(bool p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); } - function log( - bool p0, - bool p1, - bool p2 - ) internal view { + function log(bool p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); } - function log( - bool p0, - bool p1, - address p2 - ) internal view { + function log(bool p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); } - function log( - bool p0, - address p1, - uint256 p2 - ) internal view { + function log(bool p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); } - function log( - bool p0, - address p1, - string memory p2 - ) internal view { + function log(bool p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); } - function log( - bool p0, - address p1, - bool p2 - ) internal view { + function log(bool p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); } - function log( - bool p0, - address p1, - address p2 - ) internal view { + function log(bool p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); } - function log( - address p0, - uint256 p1, - uint256 p2 - ) internal view { + function log(address p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); } - function log( - address p0, - uint256 p1, - string memory p2 - ) internal view { + function log(address p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); } - function log( - address p0, - uint256 p1, - bool p2 - ) internal view { + function log(address p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); } - function log( - address p0, - uint256 p1, - address p2 - ) internal view { + function log(address p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); } - function log( - address p0, - string memory p1, - uint256 p2 - ) internal view { + function log(address p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); } - function log( - address p0, - string memory p1, - string memory p2 - ) internal view { + function log(address p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); } - function log( - address p0, - string memory p1, - bool p2 - ) internal view { + function log(address p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); } - function log( - address p0, - string memory p1, - address p2 - ) internal view { + function log(address p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); } - function log( - address p0, - bool p1, - uint256 p2 - ) internal view { + function log(address p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); } - function log( - address p0, - bool p1, - string memory p2 - ) internal view { + function log(address p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); } - function log( - address p0, - bool p1, - bool p2 - ) internal view { + function log(address p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); } - function log( - address p0, - bool p1, - address p2 - ) internal view { + function log(address p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); } - function log( - address p0, - address p1, - uint256 p2 - ) internal view { + function log(address p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); } - function log( - address p0, - address p1, - string memory p2 - ) internal view { + function log(address p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); } - function log( - address p0, - address p1, - bool p2 - ) internal view { + function log(address p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); } - function log( - address p0, - address p1, - address p2 - ) internal view { + function log(address p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); } - function log( - uint256 p0, - uint256 p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - uint256 p2, - string memory p3 - ) internal view { + function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - uint256 p2, - bool p3 - ) internal view { + function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - uint256 p2, - address p3 - ) internal view { + function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - string memory p2, - uint256 p3 - ) internal view { + function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - string memory p2, - string memory p3 - ) internal view { + function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - string memory p2, - bool p3 - ) internal view { + function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - string memory p2, - address p3 - ) internal view { + function log(uint256 p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - bool p2, - uint256 p3 - ) internal view { + function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - bool p2, - string memory p3 - ) internal view { + function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - bool p2, - bool p3 - ) internal view { + function log(uint256 p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - bool p2, - address p3 - ) internal view { + function log(uint256 p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - address p2, - uint256 p3 - ) internal view { + function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - address p2, - string memory p3 - ) internal view { + function log(uint256 p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - address p2, - bool p3 - ) internal view { + function log(uint256 p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - uint256 p1, - address p2, - address p3 - ) internal view { + function log(uint256 p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - uint256 p2, - string memory p3 - ) internal view { + function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - uint256 p2, - bool p3 - ) internal view { + function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - uint256 p2, - address p3 - ) internal view { + function log(uint256 p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - string memory p2, - uint256 p3 - ) internal view { + function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - string memory p2, - string memory p3 - ) internal view { + function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - string memory p2, - bool p3 - ) internal view { + function log(uint256 p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - string memory p2, - address p3 - ) internal view { + function log(uint256 p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - bool p2, - uint256 p3 - ) internal view { + function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - bool p2, - string memory p3 - ) internal view { + function log(uint256 p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - bool p2, - bool p3 - ) internal view { + function log(uint256 p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - bool p2, - address p3 - ) internal view { + function log(uint256 p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - address p2, - uint256 p3 - ) internal view { + function log(uint256 p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - address p2, - string memory p3 - ) internal view { + function log(uint256 p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - address p2, - bool p3 - ) internal view { + function log(uint256 p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - string memory p1, - address p2, - address p3 - ) internal view { + function log(uint256 p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - uint256 p2, - string memory p3 - ) internal view { + function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - uint256 p2, - bool p3 - ) internal view { + function log(uint256 p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - uint256 p2, - address p3 - ) internal view { + function log(uint256 p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - string memory p2, - uint256 p3 - ) internal view { + function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - string memory p2, - string memory p3 - ) internal view { + function log(uint256 p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - string memory p2, - bool p3 - ) internal view { + function log(uint256 p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - string memory p2, - address p3 - ) internal view { + function log(uint256 p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - bool p2, - uint256 p3 - ) internal view { + function log(uint256 p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - bool p2, - string memory p3 - ) internal view { + function log(uint256 p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - bool p2, - bool p3 - ) internal view { + function log(uint256 p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - bool p2, - address p3 - ) internal view { + function log(uint256 p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - address p2, - uint256 p3 - ) internal view { + function log(uint256 p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - address p2, - string memory p3 - ) internal view { + function log(uint256 p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - address p2, - bool p3 - ) internal view { + function log(uint256 p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - bool p1, - address p2, - address p3 - ) internal view { + function log(uint256 p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - uint256 p2, - string memory p3 - ) internal view { + function log(uint256 p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - uint256 p2, - bool p3 - ) internal view { + function log(uint256 p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - uint256 p2, - address p3 - ) internal view { + function log(uint256 p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - string memory p2, - uint256 p3 - ) internal view { + function log(uint256 p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - string memory p2, - string memory p3 - ) internal view { + function log(uint256 p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - string memory p2, - bool p3 - ) internal view { + function log(uint256 p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - string memory p2, - address p3 - ) internal view { + function log(uint256 p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - bool p2, - uint256 p3 - ) internal view { + function log(uint256 p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - bool p2, - string memory p3 - ) internal view { + function log(uint256 p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - bool p2, - bool p3 - ) internal view { + function log(uint256 p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - bool p2, - address p3 - ) internal view { + function log(uint256 p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - address p2, - uint256 p3 - ) internal view { + function log(uint256 p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - address p2, - string memory p3 - ) internal view { + function log(uint256 p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - address p2, - bool p3 - ) internal view { + function log(uint256 p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); } - function log( - uint256 p0, - address p1, - address p2, - address p3 - ) internal view { + function log(uint256 p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - uint256 p2, - string memory p3 - ) internal view { + function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - uint256 p2, - bool p3 - ) internal view { + function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - uint256 p2, - address p3 - ) internal view { + function log(string memory p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - string memory p2, - uint256 p3 - ) internal view { + function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - string memory p2, - string memory p3 - ) internal view { + function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - string memory p2, - bool p3 - ) internal view { + function log(string memory p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - string memory p2, - address p3 - ) internal view { + function log(string memory p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - bool p2, - uint256 p3 - ) internal view { + function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - bool p2, - string memory p3 - ) internal view { + function log(string memory p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - bool p2, - bool p3 - ) internal view { + function log(string memory p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - bool p2, - address p3 - ) internal view { + function log(string memory p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - address p2, - uint256 p3 - ) internal view { + function log(string memory p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - address p2, - string memory p3 - ) internal view { + function log(string memory p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - address p2, - bool p3 - ) internal view { + function log(string memory p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - uint256 p1, - address p2, - address p3 - ) internal view { + function log(string memory p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - uint256 p2, - string memory p3 - ) internal view { + function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - uint256 p2, - bool p3 - ) internal view { + function log(string memory p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - uint256 p2, - address p3 - ) internal view { + function log(string memory p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - string memory p2, - uint256 p3 - ) internal view { + function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - string memory p2, - string memory p3 - ) internal view { + function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - string memory p2, - bool p3 - ) internal view { + function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - string memory p2, - address p3 - ) internal view { + function log(string memory p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - bool p2, - uint256 p3 - ) internal view { + function log(string memory p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - bool p2, - string memory p3 - ) internal view { + function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - bool p2, - bool p3 - ) internal view { + function log(string memory p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - bool p2, - address p3 - ) internal view { + function log(string memory p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - address p2, - uint256 p3 - ) internal view { + function log(string memory p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - address p2, - string memory p3 - ) internal view { + function log(string memory p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - address p2, - bool p3 - ) internal view { + function log(string memory p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - string memory p1, - address p2, - address p3 - ) internal view { + function log(string memory p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - uint256 p2, - string memory p3 - ) internal view { + function log(string memory p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - uint256 p2, - bool p3 - ) internal view { + function log(string memory p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - uint256 p2, - address p3 - ) internal view { + function log(string memory p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - string memory p2, - uint256 p3 - ) internal view { + function log(string memory p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - string memory p2, - string memory p3 - ) internal view { + function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - string memory p2, - bool p3 - ) internal view { + function log(string memory p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - string memory p2, - address p3 - ) internal view { + function log(string memory p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - bool p2, - uint256 p3 - ) internal view { + function log(string memory p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - bool p2, - string memory p3 - ) internal view { + function log(string memory p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - bool p2, - bool p3 - ) internal view { + function log(string memory p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - bool p2, - address p3 - ) internal view { + function log(string memory p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - address p2, - uint256 p3 - ) internal view { + function log(string memory p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - address p2, - string memory p3 - ) internal view { + function log(string memory p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - address p2, - bool p3 - ) internal view { + function log(string memory p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - bool p1, - address p2, - address p3 - ) internal view { + function log(string memory p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(string memory p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - uint256 p2, - string memory p3 - ) internal view { + function log(string memory p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - uint256 p2, - bool p3 - ) internal view { + function log(string memory p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - uint256 p2, - address p3 - ) internal view { + function log(string memory p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - string memory p2, - uint256 p3 - ) internal view { + function log(string memory p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - string memory p2, - string memory p3 - ) internal view { + function log(string memory p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - string memory p2, - bool p3 - ) internal view { + function log(string memory p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - string memory p2, - address p3 - ) internal view { + function log(string memory p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - bool p2, - uint256 p3 - ) internal view { + function log(string memory p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - bool p2, - string memory p3 - ) internal view { + function log(string memory p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - bool p2, - bool p3 - ) internal view { + function log(string memory p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - bool p2, - address p3 - ) internal view { + function log(string memory p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - address p2, - uint256 p3 - ) internal view { + function log(string memory p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - address p2, - string memory p3 - ) internal view { + function log(string memory p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - address p2, - bool p3 - ) internal view { + function log(string memory p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); } - function log( - string memory p0, - address p1, - address p2, - address p3 - ) internal view { + function log(string memory p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - uint256 p2, - string memory p3 - ) internal view { + function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - uint256 p2, - bool p3 - ) internal view { + function log(bool p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - uint256 p2, - address p3 - ) internal view { + function log(bool p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - string memory p2, - uint256 p3 - ) internal view { + function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - string memory p2, - string memory p3 - ) internal view { + function log(bool p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - string memory p2, - bool p3 - ) internal view { + function log(bool p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - string memory p2, - address p3 - ) internal view { + function log(bool p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - bool p2, - uint256 p3 - ) internal view { + function log(bool p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - bool p2, - string memory p3 - ) internal view { + function log(bool p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - bool p2, - bool p3 - ) internal view { + function log(bool p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - bool p2, - address p3 - ) internal view { + function log(bool p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - address p2, - uint256 p3 - ) internal view { + function log(bool p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - address p2, - string memory p3 - ) internal view { + function log(bool p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - address p2, - bool p3 - ) internal view { + function log(bool p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - uint256 p1, - address p2, - address p3 - ) internal view { + function log(bool p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - uint256 p2, - string memory p3 - ) internal view { + function log(bool p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - uint256 p2, - bool p3 - ) internal view { + function log(bool p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - uint256 p2, - address p3 - ) internal view { + function log(bool p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - string memory p2, - uint256 p3 - ) internal view { + function log(bool p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - string memory p2, - string memory p3 - ) internal view { + function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - string memory p2, - bool p3 - ) internal view { + function log(bool p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - string memory p2, - address p3 - ) internal view { + function log(bool p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - bool p2, - uint256 p3 - ) internal view { + function log(bool p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - bool p2, - string memory p3 - ) internal view { + function log(bool p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - bool p2, - bool p3 - ) internal view { + function log(bool p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - bool p2, - address p3 - ) internal view { + function log(bool p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - address p2, - uint256 p3 - ) internal view { + function log(bool p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - address p2, - string memory p3 - ) internal view { + function log(bool p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - address p2, - bool p3 - ) internal view { + function log(bool p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - string memory p1, - address p2, - address p3 - ) internal view { + function log(bool p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(bool p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - uint256 p2, - string memory p3 - ) internal view { + function log(bool p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - uint256 p2, - bool p3 - ) internal view { + function log(bool p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - uint256 p2, - address p3 - ) internal view { + function log(bool p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - string memory p2, - uint256 p3 - ) internal view { + function log(bool p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - string memory p2, - string memory p3 - ) internal view { + function log(bool p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - string memory p2, - bool p3 - ) internal view { + function log(bool p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - string memory p2, - address p3 - ) internal view { + function log(bool p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - bool p2, - uint256 p3 - ) internal view { + function log(bool p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - bool p2, - string memory p3 - ) internal view { + function log(bool p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - bool p2, - bool p3 - ) internal view { + function log(bool p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - bool p2, - address p3 - ) internal view { + function log(bool p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - address p2, - uint256 p3 - ) internal view { + function log(bool p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - address p2, - string memory p3 - ) internal view { + function log(bool p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - address p2, - bool p3 - ) internal view { + function log(bool p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - bool p1, - address p2, - address p3 - ) internal view { + function log(bool p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(bool p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - uint256 p2, - string memory p3 - ) internal view { + function log(bool p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - uint256 p2, - bool p3 - ) internal view { + function log(bool p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - uint256 p2, - address p3 - ) internal view { + function log(bool p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - string memory p2, - uint256 p3 - ) internal view { + function log(bool p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - string memory p2, - string memory p3 - ) internal view { + function log(bool p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - string memory p2, - bool p3 - ) internal view { + function log(bool p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - string memory p2, - address p3 - ) internal view { + function log(bool p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - bool p2, - uint256 p3 - ) internal view { + function log(bool p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - bool p2, - string memory p3 - ) internal view { + function log(bool p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - bool p2, - bool p3 - ) internal view { + function log(bool p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - bool p2, - address p3 - ) internal view { + function log(bool p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - address p2, - uint256 p3 - ) internal view { + function log(bool p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - address p2, - string memory p3 - ) internal view { + function log(bool p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - address p2, - bool p3 - ) internal view { + function log(bool p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); } - function log( - bool p0, - address p1, - address p2, - address p3 - ) internal view { + function log(bool p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - uint256 p2, - string memory p3 - ) internal view { + function log(address p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - uint256 p2, - bool p3 - ) internal view { + function log(address p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - uint256 p2, - address p3 - ) internal view { + function log(address p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - string memory p2, - uint256 p3 - ) internal view { + function log(address p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - string memory p2, - string memory p3 - ) internal view { + function log(address p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - string memory p2, - bool p3 - ) internal view { + function log(address p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - string memory p2, - address p3 - ) internal view { + function log(address p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - bool p2, - uint256 p3 - ) internal view { + function log(address p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - bool p2, - string memory p3 - ) internal view { + function log(address p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - bool p2, - bool p3 - ) internal view { + function log(address p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - bool p2, - address p3 - ) internal view { + function log(address p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - address p2, - uint256 p3 - ) internal view { + function log(address p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - address p2, - string memory p3 - ) internal view { + function log(address p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - address p2, - bool p3 - ) internal view { + function log(address p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); } - function log( - address p0, - uint256 p1, - address p2, - address p3 - ) internal view { + function log(address p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(address p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - uint256 p2, - string memory p3 - ) internal view { + function log(address p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - uint256 p2, - bool p3 - ) internal view { + function log(address p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - uint256 p2, - address p3 - ) internal view { + function log(address p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - string memory p2, - uint256 p3 - ) internal view { + function log(address p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - string memory p2, - string memory p3 - ) internal view { + function log(address p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - string memory p2, - bool p3 - ) internal view { + function log(address p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - string memory p2, - address p3 - ) internal view { + function log(address p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - bool p2, - uint256 p3 - ) internal view { + function log(address p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - bool p2, - string memory p3 - ) internal view { + function log(address p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - bool p2, - bool p3 - ) internal view { + function log(address p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - bool p2, - address p3 - ) internal view { + function log(address p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - address p2, - uint256 p3 - ) internal view { + function log(address p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - address p2, - string memory p3 - ) internal view { + function log(address p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - address p2, - bool p3 - ) internal view { + function log(address p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); } - function log( - address p0, - string memory p1, - address p2, - address p3 - ) internal view { + function log(address p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(address p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - uint256 p2, - string memory p3 - ) internal view { + function log(address p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - uint256 p2, - bool p3 - ) internal view { + function log(address p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - uint256 p2, - address p3 - ) internal view { + function log(address p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - string memory p2, - uint256 p3 - ) internal view { + function log(address p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - string memory p2, - string memory p3 - ) internal view { + function log(address p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - string memory p2, - bool p3 - ) internal view { + function log(address p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - string memory p2, - address p3 - ) internal view { + function log(address p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - bool p2, - uint256 p3 - ) internal view { + function log(address p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - bool p2, - string memory p3 - ) internal view { + function log(address p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - bool p2, - bool p3 - ) internal view { + function log(address p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - bool p2, - address p3 - ) internal view { + function log(address p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - address p2, - uint256 p3 - ) internal view { + function log(address p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - address p2, - string memory p3 - ) internal view { + function log(address p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - address p2, - bool p3 - ) internal view { + function log(address p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); } - function log( - address p0, - bool p1, - address p2, - address p3 - ) internal view { + function log(address p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - uint256 p2, - uint256 p3 - ) internal view { + function log(address p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - uint256 p2, - string memory p3 - ) internal view { + function log(address p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - uint256 p2, - bool p3 - ) internal view { + function log(address p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - uint256 p2, - address p3 - ) internal view { + function log(address p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - string memory p2, - uint256 p3 - ) internal view { + function log(address p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - string memory p2, - string memory p3 - ) internal view { + function log(address p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - string memory p2, - bool p3 - ) internal view { + function log(address p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - string memory p2, - address p3 - ) internal view { + function log(address p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - bool p2, - uint256 p3 - ) internal view { + function log(address p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - bool p2, - string memory p3 - ) internal view { + function log(address p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - bool p2, - bool p3 - ) internal view { + function log(address p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - bool p2, - address p3 - ) internal view { + function log(address p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - address p2, - uint256 p3 - ) internal view { + function log(address p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - address p2, - string memory p3 - ) internal view { + function log(address p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - address p2, - bool p3 - ) internal view { + function log(address p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); } - function log( - address p0, - address p1, - address p2, - address p3 - ) internal view { + function log(address p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); } } diff --git a/src/test/utils/Wallet.sol b/src/test/utils/Wallet.sol index e0a3072e1..e3f8dc4a9 100644 --- a/src/test/utils/Wallet.sol +++ b/src/test/utils/Wallet.sol @@ -9,19 +9,11 @@ import "../mocks/MockERC721.sol"; import "../mocks/MockERC1155.sol"; contract Wallet is ERC721Holder, ERC1155Holder { - function transferERC20( - address token, - address to, - uint256 amount - ) public { + function transferERC20(address token, address to, uint256 amount) public { MockERC20(token).transfer(to, amount); } - function setAllowanceERC20( - address token, - address spender, - uint256 allowanceAmount - ) public { + function setAllowanceERC20(address token, address spender, uint256 allowanceAmount) public { MockERC20(token).approve(spender, allowanceAmount); } @@ -29,19 +21,11 @@ contract Wallet is ERC721Holder, ERC1155Holder { MockERC20(token).burn(amount); } - function transferERC721( - address token, - address to, - uint256 tokenId - ) public { + function transferERC721(address token, address to, uint256 tokenId) public { MockERC721(token).transferFrom(address(this), to, tokenId); } - function setApprovalForAllERC721( - address token, - address operator, - bool toApprove - ) public { + function setApprovalForAllERC721(address token, address operator, bool toApprove) public { MockERC721(token).setApprovalForAll(operator, toApprove); } @@ -49,29 +33,15 @@ contract Wallet is ERC721Holder, ERC1155Holder { MockERC721(token).burn(tokenId); } - function transferERC1155( - address token, - address to, - uint256 tokenId, - uint256 amount, - bytes calldata data - ) external { + function transferERC1155(address token, address to, uint256 tokenId, uint256 amount, bytes calldata data) external { MockERC1155(token).safeTransferFrom(address(this), to, tokenId, amount, data); } - function setApprovalForAllERC1155( - address token, - address operator, - bool toApprove - ) public { + function setApprovalForAllERC1155(address token, address operator, bool toApprove) public { MockERC1155(token).setApprovalForAll(operator, toApprove); } - function burnERC1155( - address token, - uint256 tokenId, - uint256 amount - ) public { + function burnERC1155(address token, uint256 tokenId, uint256 amount) public { MockERC1155(token).burn(address(this), tokenId, amount); } } diff --git a/src/test/vote-BTT/other-functions/other.t.sol b/src/test/vote-BTT/other-functions/other.t.sol index d96e888d2..960a94e7e 100644 --- a/src/test/vote-BTT/other-functions/other.t.sol +++ b/src/test/vote-BTT/other-functions/other.t.sol @@ -82,7 +82,7 @@ contract VoteERC20Test_OtherFunctions is BaseTest { assertTrue(voteContract.supportsInterface(type(IERC165Upgradeable).interfaceId)); assertTrue(voteContract.supportsInterface(type(IERC721ReceiverUpgradeable).interfaceId)); assertTrue(voteContract.supportsInterface(type(IERC1155ReceiverUpgradeable).interfaceId)); - assertTrue(voteContract.supportsInterface(type(IGovernorUpgradeable).interfaceId)); + // assertTrue(voteContract.supportsInterface(type(IGovernorUpgradeable).interfaceId)); // false for other not supported interfaces assertFalse(voteContract.supportsInterface(type(IStaking721).interfaceId)); diff --git a/yarn.lock b/yarn.lock index 411d3d212..12219cc65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,25 +2,31 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@babel/code-frame@^7.0.0": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" + integrity sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA== dependencies: - "@babel/highlight" "^7.16.7" + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz" - integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" "@chainlink/contracts@^0.6.1": @@ -33,33 +39,60 @@ "@openzeppelin/contracts-upgradeable" "^4.7.3" "@openzeppelin/contracts-v0.7" "npm:@openzeppelin/contracts@v3.4.2" -"@cspotcode/source-map-consumer@0.8.0": +"@chainlink/contracts@^0.8.0": version "0.8.0" - resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" - integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + resolved "https://registry.yarnpkg.com/@chainlink/contracts/-/contracts-0.8.0.tgz#4050c83c8b1603ffb0fd6ab99f1d9ea9db2c37de" + integrity sha512-nUv1Uxw5Mn92wgLs2bgPYmo8hpdQ3s9jB/lcbdU0LmNOVu0hbfmouVnqwRLa28Ll50q6GczUA+eO0ikNIKLZsA== + dependencies: + "@eth-optimism/contracts" "^0.5.21" + "@openzeppelin/contracts" "~4.3.3" + "@openzeppelin/contracts-upgradeable-4.7.3" "npm:@openzeppelin/contracts-upgradeable@v4.7.3" + "@openzeppelin/contracts-v0.7" "npm:@openzeppelin/contracts@v3.4.2" -"@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz" - integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: - "@cspotcode/source-map-consumer" "0.8.0" + "@jridgewell/trace-mapping" "0.3.9" -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== +"@esbuild/linux-loong64@0.14.54": + version "0.14.54" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" + integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.1" - globals "^13.9.0" + espree "^9.6.0" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" - minimatch "^3.0.4" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.54.0.tgz#4fab9a2ff7860082c304f750e94acd644cf984cf" + integrity sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ== + "@eth-optimism/contracts@^0.5.21": version "0.5.40" resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.5.40.tgz#d13a04a15ea947a69055e6fc74d87e215d4c936a" @@ -433,19 +466,64 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/object-schema@^1.2.1": - 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== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@multiformats/base-x@^4.0.1": version "4.0.1" @@ -459,7 +537,7 @@ "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -467,28 +545,23 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@openzeppelin/contracts-upgradeable@4.7.3": +"@openzeppelin/contracts-upgradeable-4.7.3@npm:@openzeppelin/contracts-upgradeable@v4.7.3", "@openzeppelin/contracts-upgradeable@4.7.3": version "4.7.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz#f1d606e2827d409053f3e908ba4eb8adb1dd6995" integrity sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A== -"@openzeppelin/contracts-upgradeable@^4.4.2": - version "4.6.0" - resolved "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.6.0.tgz" - integrity sha512-5OnVuO4HlkjSCJO165a4i2Pu1zQGzMs//o54LPrwUgxvEO2P3ax1QuaSI0cEHHTveA77guS0PnNugpR2JMsPfA== - -"@openzeppelin/contracts-upgradeable@^4.7.3": +"@openzeppelin/contracts-upgradeable@^4.4.2", "@openzeppelin/contracts-upgradeable@^4.7.3", "@openzeppelin/contracts-upgradeable@^4.9.3": version "4.9.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz#ff17a80fb945f5102571f8efecb5ce5915cc4811" integrity sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A== @@ -503,33 +576,28 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.3.tgz#939534757a81f8d69cc854c7692805684ff3111e" integrity sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw== -"@openzeppelin/contracts@^4.4.2": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.0.tgz#3092d70ea60e3d1835466266b1d68ad47035a2d5" - integrity sha512-52Qb+A1DdOss8QvJrijYYPSf32GUg2pGaG/yCxtaA3cu4jduouTdg4XZSMLW9op54m1jH7J8hoajhHKOPsoJFw== +"@openzeppelin/contracts@^4.4.2", "@openzeppelin/contracts@^4.9.3": + version "4.9.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.3.tgz#00d7a8cf35a475b160b3f0293a6403c511099364" + integrity sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg== "@openzeppelin/contracts@~4.3.3": version "4.3.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.3.3.tgz#ff6ee919fc2a1abaf72b22814bfb72ed129ec137" integrity sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g== -"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1": - version "0.14.1" - resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.1.tgz" - integrity sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw== +"@solidity-parser/parser@^0.16.0", "@solidity-parser/parser@^0.16.2": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.2.tgz#42cb1e3d88b3e8029b0c9befff00b634cd92d2fa" + integrity sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg== dependencies: antlr4ts "^0.5.0-alpha.4" -"@thirdweb-dev/chains@0.1.58": +"@thirdweb-dev/chains@0.1.58", "@thirdweb-dev/chains@^0.1.54": version "0.1.58" resolved "https://registry.yarnpkg.com/@thirdweb-dev/chains/-/chains-0.1.58.tgz#5a26fe187ef39b7c6af87972166785d110cad53e" integrity sha512-prSShAWoLODuZQcDBwNDqcXLzfevV2BOw54cDaHetSP+Sw/BP6SaPKIxojRQGsXARjn0JMWniG/NCtppUUHALQ== -"@thirdweb-dev/chains@^0.1.54": - version "0.1.54" - resolved "https://registry.yarnpkg.com/@thirdweb-dev/chains/-/chains-0.1.54.tgz#90e5c372a1d9cd785c51715bfbeba276ca2a203f" - integrity sha512-iCuKgtN2KIdfgqbIbZYgB8ObYdOJW9iXW9b5u+WKA4zyGApw1MTOSX0W2aPnadGen1z4iQfAuUDBYQ6JVqDOjg== - "@thirdweb-dev/contracts-js@1.3.16": version "1.3.16" resolved "https://registry.yarnpkg.com/@thirdweb-dev/contracts-js/-/contracts-js-1.3.16.tgz#264727b40b0f320c01eefcb4295e89c9e9947002" @@ -556,10 +624,10 @@ "@noble/hashes" "^1.3.2" js-sha3 "^0.9.2" -"@thirdweb-dev/dynamic-contracts@^1.1.2": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@thirdweb-dev/dynamic-contracts/-/dynamic-contracts-1.2.1.tgz#7b677d3f46469e8b30600e090482bebda3241102" - integrity sha512-IFCeETmkmOO4fLOmLtDA6kIABXU8NJ4m3LnUs/f0dooC5A3Yn4sjUIm6CA53alXuyVPUGqi1R7CuCrMYEjpdiA== +"@thirdweb-dev/dynamic-contracts@^1.1.2", "@thirdweb-dev/dynamic-contracts@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@thirdweb-dev/dynamic-contracts/-/dynamic-contracts-1.2.4.tgz#468de8a98e3be211ad1a0e541da1190093ceca49" + integrity sha512-cQtUznRXBDifzME3zmppVrfBM2Aw8C/okCLzsgcLU/Qr68TjLJTKTDGt2uGo/q5qAvRVJjQRD/bNvV1QTqjqSg== "@thirdweb-dev/generated-abis@0.0.1": version "0.0.1" @@ -576,10 +644,10 @@ buffer-reverse "^1.0.1" treeify "^1.1.0" -"@thirdweb-dev/sdk@^4.0.14": - version "4.0.14" - resolved "https://registry.yarnpkg.com/@thirdweb-dev/sdk/-/sdk-4.0.14.tgz#48cbea22d17f11fceb629adfe78a9930f949f643" - integrity sha512-gYMwNFw/LWZVBKGXMGstTV16t0d+p0mSE+7sCUua+iXvloGzcFR5hzy2QIk7p8SQi7Mkq7m49VI/K49SCi2wvQ== +"@thirdweb-dev/sdk@^4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@thirdweb-dev/sdk/-/sdk-4.0.16.tgz#2fec8d9bb645092473479e216eccd8942a2b5b13" + integrity sha512-WTG3sJTtEUpbY1SUd62GU//5npkgVQNJHOUqDjGl1jrTa8Ml0w1VQNe9p/0xbv+3cCTGYOhMvM4HkOZnrQp+gg== dependencies: "@thirdweb-dev/chains" "0.1.58" "@thirdweb-dev/contracts-js" "1.3.16" @@ -610,199 +678,194 @@ uuid "^9.0.1" "@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@typechain/ethers-v5@^10.0.0": - version "10.0.0" - resolved "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.0.0.tgz" - integrity sha512-Kot7fwAqnH96ZbI8xrRgj5Kpv9yCEdjo7mxRqrH7bYpEgijT5MmuOo8IVsdhOu7Uog4ONg7k/d5UdbAtTKUgsA== +"@typechain/ethers-v5@^10.2.1": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== dependencies: lodash "^4.17.15" ts-essentials "^7.0.1" -"@types/bn.js@^5.1.0": - 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== - dependencies: - "@types/node" "*" - "@types/fs-extra@^9.0.13": version "9.0.13" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== dependencies: "@types/node" "*" "@types/json-schema@^7.0.9": - 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== - -"@types/mocha@^9.1.0": - version "9.1.0" - resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz" - integrity sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg== + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/node@*", "@types/node@^17.0.21": - version "17.0.23" - resolved "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== +"@types/mocha@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== +"@types/node@*": + version "20.9.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.4.tgz#cc8f970e869c26834bdb7ed480b30ede622d74c7" + integrity sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA== dependencies: - "@types/node" "*" + undici-types "~5.26.4" -"@types/prettier@^2.1.1": - version "2.6.0" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz" - integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== +"@types/node@^17.0.45": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^5.13.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz" - integrity sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg== - dependencies: - "@typescript-eslint/scope-manager" "5.19.0" - "@typescript-eslint/type-utils" "5.19.0" - "@typescript-eslint/utils" "5.19.0" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.2.0" - semver "^7.3.5" +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/semver@^7.3.12": + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + +"@typescript-eslint/eslint-plugin@^5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.13.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz" - integrity sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ== +"@typescript-eslint/parser@^5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: - "@typescript-eslint/scope-manager" "5.19.0" - "@typescript-eslint/types" "5.19.0" - "@typescript-eslint/typescript-estree" "5.19.0" - debug "^4.3.2" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" -"@typescript-eslint/scope-manager@5.19.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz" - integrity sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.19.0" - "@typescript-eslint/visitor-keys" "5.19.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.19.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz" - integrity sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: - "@typescript-eslint/utils" "5.19.0" - debug "^4.3.2" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.19.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz" - integrity sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@5.19.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz" - integrity sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "5.19.0" - "@typescript-eslint/visitor-keys" "5.19.0" - debug "^4.3.2" - globby "^11.0.4" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.19.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz" - integrity sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ== +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.19.0" - "@typescript-eslint/types" "5.19.0" - "@typescript-eslint/typescript-estree" "5.19.0" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.19.0": - version "5.19.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz" - integrity sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "5.19.0" - eslint-visitor-keys "^3.0.0" + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + abitype@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.2.5.tgz#e571ef2ed99db1cae551fffde5bcbcee4e446177" integrity sha512-t1iiokWYpkrziu4WL2Gb6YdGvaP9ZKs7WnA39TI8TsW2E99GVRgDPW/xOKhzoCdyxOYt550CNYEFluCwGaFHaA== -acorn-jsx@^5.0.0, acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^6.0.7: - version "6.4.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== -acorn@^8.4.1, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== +acorn@^8.4.1, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: +ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -810,98 +873,86 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -antlr4@4.7.1: - version "4.7.1" - resolved "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz" - integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== +antlr4@^4.11.0: + version "4.13.1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1.tgz#1e0a1830a08faeb86217cb2e6c34716004e4253d" + integrity sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA== antlr4ts@^0.5.0-alpha.4: version "0.5.0-alpha.4" - resolved "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== any-promise@^1.0.0: version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" arg@^4.1.0: version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== -array-back@^4.0.1: +array-back@^4.0.1, array-back@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== array-union@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== assertion-error@^1.1.0: @@ -909,15 +960,15 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -ast-parents@0.0.1: +ast-parents@^0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz" - integrity sha1-UI/Q8F0MSHddnszaLhdEIyYejdM= + resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" + integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== asynckit@^0.4.0: version "0.4.0" @@ -926,16 +977,9 @@ asynckit@^0.4.0: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2: - 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" - base-x@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" @@ -943,7 +987,7 @@ base-x@^4.0.0: base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== bech32@1.1.4: @@ -951,36 +995,16 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -bignumber.js@^9.0.1: - version "9.0.2" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== - binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" - integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= - bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.1.2: - version "5.2.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" @@ -988,15 +1012,22 @@ bn.js@^5.2.0, bn.js@^5.2.1: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" @@ -1008,28 +1039,9 @@ brorand@^1.1.0: browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.2.0: - 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" - -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= - dependencies: - base-x "^3.0.2" - bs58@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" @@ -1037,122 +1049,86 @@ bs58@^5.0.0: dependencies: base-x "^4.0.0" -bs58check@^2.1.2: - 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" - buffer-reverse@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - buffer@^6.0.3: version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" ieee754 "^1.2.1" bufio@^1.0.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.2.0.tgz#b9ad1c06b0d9010363c387c39d2810a7086d143f" - integrity sha512-UlFk8z/PwdhYQTXSQQagwGAdtRI83gib2n4uy4rQnenxUM2yQi8lBDzF230BNk+3wAoZDxYRoBwVVUPgHa9MCA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.2.1.tgz#8d4ab3ddfcd5faa90f996f922f9397d41cbaf2de" + integrity sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA== bundle-require@^3.0.2: - version "3.0.4" - resolved "https://registry.npmjs.org/bundle-require/-/bundle-require-3.0.4.tgz" - integrity sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A== + version "3.1.2" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-3.1.2.tgz#1374a7bdcb8b330a7ccc862ccbf7c137cc43ad27" + integrity sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA== dependencies: load-tsconfig "^0.2.0" cac@^6.7.12: - version "6.7.12" - resolved "https://registry.npmjs.org/cac/-/cac-6.7.12.tgz" - integrity sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA== - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== callsites@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^6.0.0: version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== chai@^4.3.4: - version "4.3.7" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" - integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== + version "4.3.10" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.10.tgz#d784cec635e3b7e2ffb66446a63b4e33bd390384" + integrity sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g== 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" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.5" + type-detect "^4.0.8" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: +chalk@^2.4.2: version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" chokidar@3.5.3, chokidar@^3.5.1: version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -1188,29 +1164,9 @@ cids@^1.0.0: multihashes "^4.0.1" uint8arrays "^3.0.0" -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - 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" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cliui@^7.0.2: version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -1219,38 +1175,38 @@ cliui@^7.0.2: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" command-line-args@^5.1.1: version "5.2.1" - resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== dependencies: array-back "^3.1.0" @@ -1259,113 +1215,74 @@ command-line-args@^5.1.1: typical "^4.0.0" command-line-usage@^6.1.0: - version "6.1.2" - resolved "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.2.tgz" - integrity sha512-I+0XN613reAhpBQ6icsPOTwu9cvhc9NtLtUcY2fGYuwm9JZiWBzFDA8w0PHqQjru7Xth7fM/y9TJ13+VKdjh7Q== + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== dependencies: - array-back "^4.0.1" + array-back "^4.0.2" chalk "^2.4.2" - table-layout "^1.0.1" + table-layout "^1.0.2" typical "^5.2.0" -commander@2.18.0: - version "2.18.0" - resolved "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== commander@^4.0.0: version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -cosmiconfig@^5.0.7: - version "5.2.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - 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" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== 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" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" create-require@^1.1.0: version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -crypto-js@^3.1.9-1: - version "3.3.0" - resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz" - integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== - debug@4.3.3: version "4.3.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" -debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: +debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -deep-eql@^4.1.2: +deep-eql@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== @@ -1374,12 +1291,12 @@ deep-eql@^4.1.2: deep-extend@~0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== delayed-stream@~1.0.0: @@ -1389,34 +1306,34 @@ delayed-stream@~1.0.0: diff@5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== diff@^4.0.1: version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" -dotenv@^16.0.0: - version "16.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz" - integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== +dotenv@^16.3.1: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== -elliptic@6.5.4, elliptic@^6.5.4: +elliptic@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -1429,24 +1346,14 @@ elliptic@6.5.4, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emoji-regex@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz" - integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== erc721a-upgradeable@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/erc721a-upgradeable/-/erc721a-upgradeable-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/erc721a-upgradeable/-/erc721a-upgradeable-3.3.0.tgz#c7b481668694756120868261fe98ab3a245a06b4" integrity sha512-ILE0SjKuvhx+PABG0A/41QUp0MFiYmzrgo71htQ0Ov6JfDOmgUzGxDW8gZuYfKrdlYjNwSAqMpUFWBbyW3sWBA== dependencies: "@openzeppelin/contracts-upgradeable" "^4.4.2" @@ -1460,385 +1367,262 @@ erc721a@3.3.0: error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -esbuild-android-64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz#fc5f95ce78c8c3d790fa16bc71bd904f2bb42aa1" - integrity sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw== - -esbuild-android-arm64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz#44356fbb9f8de82a5cdf11849e011dfb3ad0a8a8" - integrity sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg== - -esbuild-darwin-64@0.14.36: - version "0.14.36" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz" - integrity sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ== - -esbuild-darwin-arm64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz#2a8040c2e465131e5281034f3c72405e643cb7b2" - integrity sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw== - -esbuild-freebsd-64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz#d82c387b4d01fe9e8631f97d41eb54f2dbeb68a3" - integrity sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww== - -esbuild-freebsd-arm64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz#e8ce2e6c697da6c7ecd0cc0ac821d47c5ab68529" - integrity sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA== - -esbuild-linux-32@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz#a4a261e2af91986ea62451f2db712a556cb38a15" - integrity sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw== - -esbuild-linux-64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz#4a9500f9197e2c8fcb884a511d2c9d4c2debde72" - integrity sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg== - -esbuild-linux-arm64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz#c91c21e25b315464bd7da867365dd1dae14ca176" - integrity sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw== - -esbuild-linux-arm@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz#90e23bca2e6e549affbbe994f80ba3bb6c4d934a" - integrity sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg== - -esbuild-linux-mips64le@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz#40e11afb08353ff24709fc89e4db0f866bc131d2" - integrity sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA== - -esbuild-linux-ppc64le@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz#9e8a588c513d06cc3859f9dcc52e5fdfce8a1a5e" - integrity sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg== - -esbuild-linux-riscv64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz#e578c09b23b3b97652e60e3692bfda628b541f06" - integrity sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A== - -esbuild-linux-s390x@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz#3c9dab40d0d69932ffded0fd7317bb403626c9bc" - integrity sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg== - -esbuild-netbsd-64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz#e27847f6d506218291619b8c1e121ecd97628494" - integrity sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A== - -esbuild-openbsd-64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz#c94c04c557fae516872a586eae67423da6d2fabb" - integrity sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg== - -esbuild-sunos-64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz#9b79febc0df65a30f1c9bd63047d1675511bf99d" - integrity sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ== - -esbuild-windows-32@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz#910d11936c8d2122ffdd3275e5b28d8a4e1240ec" - integrity sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w== - -esbuild-windows-64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz#21b4ce8b42a4efc63f4b58ec617f1302448aad26" - integrity sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ== - -esbuild-windows-arm64@0.14.36: - version "0.14.36" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz#ba21546fecb7297667d0052d00150de22c044b24" - integrity sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q== +esbuild-android-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" + integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== + +esbuild-android-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" + integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== + +esbuild-darwin-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" + integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== + +esbuild-darwin-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" + integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== + +esbuild-freebsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" + integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== + +esbuild-freebsd-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" + integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== + +esbuild-linux-32@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" + integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== + +esbuild-linux-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" + integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== + +esbuild-linux-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" + integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== + +esbuild-linux-arm@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" + integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== + +esbuild-linux-mips64le@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" + integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== + +esbuild-linux-ppc64le@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" + integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== + +esbuild-linux-riscv64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" + integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== + +esbuild-linux-s390x@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" + integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== + +esbuild-netbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" + integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== + +esbuild-openbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" + integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== + +esbuild-sunos-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" + integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== + +esbuild-windows-32@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" + integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== + +esbuild-windows-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" + integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== + +esbuild-windows-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" + integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== esbuild@^0.14.25: - version "0.14.36" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz" - integrity sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw== + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" + integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== optionalDependencies: - esbuild-android-64 "0.14.36" - esbuild-android-arm64 "0.14.36" - esbuild-darwin-64 "0.14.36" - esbuild-darwin-arm64 "0.14.36" - esbuild-freebsd-64 "0.14.36" - esbuild-freebsd-arm64 "0.14.36" - esbuild-linux-32 "0.14.36" - esbuild-linux-64 "0.14.36" - esbuild-linux-arm "0.14.36" - esbuild-linux-arm64 "0.14.36" - esbuild-linux-mips64le "0.14.36" - esbuild-linux-ppc64le "0.14.36" - esbuild-linux-riscv64 "0.14.36" - esbuild-linux-s390x "0.14.36" - esbuild-netbsd-64 "0.14.36" - esbuild-openbsd-64 "0.14.36" - esbuild-sunos-64 "0.14.36" - esbuild-windows-32 "0.14.36" - esbuild-windows-64 "0.14.36" - esbuild-windows-arm64 "0.14.36" + "@esbuild/linux-loong64" "0.14.54" + esbuild-android-64 "0.14.54" + esbuild-android-arm64 "0.14.54" + esbuild-darwin-64 "0.14.54" + esbuild-darwin-arm64 "0.14.54" + esbuild-freebsd-64 "0.14.54" + esbuild-freebsd-arm64 "0.14.54" + esbuild-linux-32 "0.14.54" + esbuild-linux-64 "0.14.54" + esbuild-linux-arm "0.14.54" + esbuild-linux-arm64 "0.14.54" + esbuild-linux-mips64le "0.14.54" + esbuild-linux-ppc64le "0.14.54" + esbuild-linux-riscv64 "0.14.54" + esbuild-linux-s390x "0.14.54" + esbuild-netbsd-64 "0.14.54" + esbuild-openbsd-64 "0.14.54" + esbuild-sunos-64 "0.14.54" + esbuild-windows-32 "0.14.54" + esbuild-windows-64 "0.14.54" + esbuild-windows-arm64 "0.14.54" escalade@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" +eslint-config-prettier@^8.10.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - 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== - -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: - 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== - -eslint@^5.6.0: - version "5.16.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" - -eslint@^8.10.0: - version "8.13.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz" - integrity sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ== - dependencies: - "@eslint/eslintrc" "^1.2.1" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.54.0: + version "8.54.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.54.0.tgz#588e0dd4388af91a2e8fa37ea64924074c783537" + integrity sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.54.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" 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.3.1" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" 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-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -esquery@^1.0.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -ethereum-bloom-filters@^1.0.6: - 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" - -ethereum-cryptography@^0.1.3: - 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" - -ethereumjs-util@^7.1.0: - version "7.1.4" - resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz" - integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== - 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" - -ethers@^5.0.0: +ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -1874,30 +1658,14 @@ ethers@^5.0.0: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - eventemitter3@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -evp_bytestokey@^1.0.3: - 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" - execa@^5.0.0: version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -1915,29 +1683,20 @@ explain-error@^1.0.4: resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" integrity sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +fast-diff@^1.1.2, fast-diff@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -1947,95 +1706,68 @@ fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-replace@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== dependencies: array-back "^3.0.1" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" flat@^5.0.2: version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== form-data@^4.0.0: version "4.0.0" @@ -2046,10 +1778,10 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -fs-extra@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz" - integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -2057,7 +1789,7 @@ fs-extra@^10.0.1: fs-extra@^7.0.0: version "7.0.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" @@ -2066,51 +1798,46 @@ fs-extra@^7.0.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob@7.1.6: version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" @@ -2122,7 +1849,7 @@ glob@7.1.6: glob@7.1.7: version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" @@ -2132,9 +1859,9 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0, glob@^7.1.2, glob@^7.1.3: +glob@7.2.0: version "7.2.0" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" @@ -2144,21 +1871,39 @@ glob@7.2.0, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.7.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + +glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" -globals@^13.6.0, globals@^13.9.0: - version "13.13.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz" - integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" -globby@^11.0.3, globby@^11.0.4: +globby@^11.0.3, globby@^11.1.0: version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -2169,35 +1914,31 @@ globby@^11.0.3, globby@^11.0.4: slash "^3.0.0" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== growl@1.10.5: version "1.10.5" - resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -hash-base@^3.0.0: - 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" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -2207,7 +1948,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: he@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hmac-drbg@^1.0.1: @@ -2221,42 +1962,22 @@ hmac-drbg@^1.0.1: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@^0.4.24: - 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" - ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.8, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -2264,113 +1985,84 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= - is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== joycon@^3.0.1: version "3.1.1" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== js-sha3@0.8.0, js-sha3@^0.8.0: @@ -2385,49 +2077,51 @@ js-sha3@^0.9.2: js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -2436,135 +2130,124 @@ jsonfile@^6.0.1: keccak256@^1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz" + resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== dependencies: bn.js "^5.2.0" buffer "^6.0.3" keccak "^3.0.2" -keccak@^3.0.0, keccak@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== +keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== dependencies: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" readable-stream "^3.6.0" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + json-buffer "3.0.1" levn@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" type-check "~0.4.0" lilconfig@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" - integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== load-tsconfig@^0.2.0: - version "0.2.3" - resolved "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.3.tgz" - integrity sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ== + version "0.2.5" + resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" + integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15: +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" is-unicode-supported "^0.1.0" -loupe@^2.3.1: - version "2.3.6" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" - integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: - get-func-name "^2.0.0" + get-func-name "^2.0.1" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" make-error@^1.1.1: version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -md5.js@^1.3.4: - 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" - merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merkletreejs@^0.2.31: - version "0.2.31" - resolved "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.31.tgz" - integrity sha512-dnK2sE43OebmMe5Qnq1wXvvMIjZjm1u6CcB2KeW6cghlN4p21OpCUr2p56KTVf20KJItNChVsGnimcscp9f+yw== - dependencies: - bignumber.js "^9.0.1" - buffer-reverse "^1.0.1" - crypto-js "^3.1.9-1" - treeify "^1.1.0" - web3-utils "^1.3.4" - micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -2577,19 +2260,14 @@ mime-db@1.52.0: mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: @@ -2604,38 +2282,33 @@ minimalistic-crypto-utils@^1.0.1: minimatch@4.2.1: version "4.2.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.4: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: - minimist "^1.2.6" + brace-expansion "^2.0.1" mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^9.2.1: +mocha@^9.2.2: version "9.2.2" - resolved "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: "@ungap/promise-all-settled" "1.1.2" @@ -2665,12 +2338,12 @@ mocha@^9.2.1: ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multibase@^4.0.1, multibase@^4.0.2: @@ -2702,14 +2375,9 @@ multihashes@^4.0.1, multihashes@^4.0.2: uint8arrays "^3.0.0" varint "^5.0.2" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - mz@^2.7.0: version "2.7.0" - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: any-promise "^1.0.0" @@ -2718,161 +2386,121 @@ mz@^2.7.0: nanoid@3.3.1: version "3.3.1" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== -natural-compare@^1.4.0: +natural-compare-lite@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== node-addon-api@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== node-gyp-build@^4.2.0: - version "4.4.0" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz" - integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== + version "4.7.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.7.0.tgz#749f0033590b2a89ac8edb5e0775f95f5ae86d15" + integrity sha512-PbZERfeFdrHQOOXiAKOY0VPbykZy90ndPKk0d+CFDegTKmWp1VgOTz2xACVbr1BjCWxrQp68CXtvNsveFhqDJg== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" - integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - object-assign@^4.0.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== once@^1.3.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: + "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pathval@^1.1.1: @@ -2880,30 +2508,24 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -pbkdf2@^3.0.17: - 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" - picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pirates@^4.0.1: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== postcss-load-config@^3.0.1: version "3.1.4" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== dependencies: lilconfig "^2.0.5" @@ -2911,66 +2533,48 @@ postcss-load-config@^3.0.1: prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" -prettier-plugin-solidity@^1.0.0-beta.19: - version "1.0.0-beta.19" - resolved "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.19.tgz" - integrity sha512-xxRQ5ZiiZyUoMFLE9h7HnUDXI/daf1tnmL1msEdcKmyh7ZGQ4YklkYLC71bfBpYU2WruTb5/SFLUaEb3RApg5g== +prettier-plugin-solidity@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.2.0.tgz#dc620b4fc7708a60687a87cdc803e57a1856b6fd" + integrity sha512-fgxcUZpVAP+LlRfy5JI5oaAkXGkmsje2VJ5krv/YMm+rcTZbIUwFguSw5f+WFuttMjpDm6wB4UL7WVkArEfiVA== dependencies: - "@solidity-parser/parser" "^0.14.0" - emoji-regex "^10.0.0" - escape-string-regexp "^4.0.0" - semver "^7.3.5" + "@solidity-parser/parser" "^0.16.2" + semver "^7.5.4" solidity-comments-extractor "^0.0.7" - string-width "^4.2.3" - -prettier@^1.14.3: - version "1.19.1" - resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.3.1, prettier@^2.5.1: - version "2.6.2" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +prettier@^2.3.1, prettier@^2.8.3, prettier@^2.8.8: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -readable-stream@^3.0.0: +readable-stream@^3.0.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -2979,267 +2583,162 @@ readable-stream@^3.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^3.6.0: - 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" - readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" reduce-flatten@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - reusify@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - 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" - -rlp@^2.2.4: - 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" - -rollup@^2.60.0: - version "2.70.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz" - integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA== +rollup@^2.74.1: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: fsevents "~2.3.2" -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" -rxjs@^6.4.0: - version "6.6.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scrypt-js@3.0.1, scrypt-js@^3.0.0: +scrypt-js@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^5.5.0, semver@^5.5.1: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.5: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== +semver@^7.3.7, semver@^7.5.2, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -sha.js@^2.4.0, sha.js@^2.4.8: - 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" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== slash@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" solhint-plugin-prettier@^0.0.5: version "0.0.5" - resolved "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz" + resolved "https://registry.yarnpkg.com/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz#e3b22800ba435cd640a9eca805a7f8bc3e3e6a6b" integrity sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA== dependencies: prettier-linter-helpers "^1.0.0" -solhint@^3.3.7: - version "3.3.7" - resolved "https://registry.npmjs.org/solhint/-/solhint-3.3.7.tgz" - integrity sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ== - dependencies: - "@solidity-parser/parser" "^0.14.1" - ajv "^6.6.1" - antlr4 "4.7.1" - ast-parents "0.0.1" - chalk "^2.4.2" - commander "2.18.0" - cosmiconfig "^5.0.7" - eslint "^5.6.0" - fast-diff "^1.1.2" - glob "^7.1.3" - ignore "^4.0.6" - js-yaml "^3.12.0" - lodash "^4.17.11" - semver "^6.3.0" +solhint@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.6.2.tgz#2b2acbec8fdc37b2c68206a71ba89c7f519943fe" + integrity sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ== + dependencies: + "@solidity-parser/parser" "^0.16.0" + ajv "^6.12.6" + antlr4 "^4.11.0" + ast-parents "^0.0.1" + chalk "^4.1.2" + commander "^10.0.0" + cosmiconfig "^8.0.0" + fast-diff "^1.2.0" + glob "^8.0.3" + ignore "^5.2.4" + js-yaml "^4.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + semver "^7.5.2" + strip-ansi "^6.0.1" + table "^6.8.1" + text-table "^0.2.0" optionalDependencies: - prettier "^1.14.3" + prettier "^2.8.3" solidity-comments-extractor@^0.0.7: version "0.0.7" - resolved "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz" + resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" split2@^3.1.1: version "3.2.2" @@ -3248,36 +2747,14 @@ split2@^3.1.1: dependencies: readable-stream "^3.0.0" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - string-format@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== -string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -3286,59 +2763,34 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" - integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= - dependencies: - is-hex-prefixed "1.0.0" - -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - sucrase@^3.20.3: - version "3.21.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.21.0.tgz" - integrity sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ== + version "3.34.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" + integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== dependencies: + "@jridgewell/gen-mapping" "^0.3.2" commander "^4.0.0" glob "7.1.6" lines-and-columns "^1.1.6" @@ -3348,28 +2800,28 @@ sucrase@^3.20.3: supports-color@8.1.1: version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -table-layout@^1.0.1: +table-layout@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== dependencies: array-back "^4.0.1" @@ -3377,73 +2829,69 @@ table-layout@^1.0.1: typical "^5.2.0" wordwrapjs "^4.0.0" -table@^5.2.3: - version "5.4.6" - resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +table@^6.8.1: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" text-table@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thenify-all@^1.0.0: version "1.6.0" - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": version "3.3.1" - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - tiny-invariant@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" + version "1.3.1" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + tree-kill@^1.2.2: version "1.2.2" - resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== treeify@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== ts-command-line-args@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.2.1.tgz" - integrity sha512-mnK68QA86FYzQYTSA/rxIjT/8EpKsvQw9QkawPic8I8t0gjAOw3Oa509NIRoaY1FmH7hdrncMp7t7o+vYoceNQ== + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== dependencies: chalk "^4.1.0" command-line-args "^5.1.1" @@ -3452,20 +2900,20 @@ ts-command-line-args@^2.2.0: ts-essentials@^7.0.1: version "7.0.3" - resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== ts-interface-checker@^0.1.9: version "0.1.13" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -ts-node@^10.6.0: - version "10.7.0" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz" - integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: - "@cspotcode/source-map-support" "0.7.0" + "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" @@ -3476,23 +2924,23 @@ ts-node@^10.6.0: create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" - v8-compile-cache-lib "^3.0.0" + v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1: version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsup@^5.11.11: - version "5.12.5" - resolved "https://registry.npmjs.org/tsup/-/tsup-5.12.5.tgz" - integrity sha512-lKwzJsB49sDto51QjqOB4SdiBLKRvgTymEBuBCovcksdDwFEz3esrkbf3m497PXntUKVTzcgOfPdTgknMtvufw== +tsup@^5.12.9: + version "5.12.9" + resolved "https://registry.yarnpkg.com/tsup/-/tsup-5.12.9.tgz#8cdd9b4bc6493317cb92edf5f3476920dddcdb18" + integrity sha512-dUpuouWZYe40lLufo64qEhDpIDsWhRbr2expv5dHEMjwqeKJS2aXA/FPqs1dxO4T6mBojo7rvo3jP9NNzaKyDg== dependencies: bundle-require "^3.0.2" cac "^6.7.12" @@ -3504,51 +2952,44 @@ tsup@^5.11.11: joycon "^3.0.1" postcss-load-config "^3.0.1" resolve-from "^5.0.0" - rollup "^2.60.0" - source-map "^0.7.3" + rollup "^2.74.1" + source-map "0.8.0-beta.0" sucrase "^3.20.3" tree-kill "^1.2.2" tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tweetnacl@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@^4.0.0, type-detect@^4.0.5: +type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typechain@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/typechain/-/typechain-8.0.0.tgz" - integrity sha512-rqDfDYc9voVAhmfVfAwzg3VYFvhvs5ck1X9T/iWkX745Cul4t+V/smjnyqrbDzWDbzD93xfld1epg7Y/uFAesQ== +typechain@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== dependencies: "@types/prettier" "^2.1.1" debug "^4.3.1" @@ -3561,19 +3002,24 @@ typechain@^8.0.0: ts-command-line-args "^2.2.0" ts-essentials "^7.0.1" -typescript@^4.4.4: - version "4.6.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.2.tgz#00d1c7c1c46928c5845c1ee8d0cc2791031d4c43" + integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== typical@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== typical@^5.2.0: version "5.2.0" - resolved "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== uint8arrays@^2.1.3: @@ -3590,47 +3036,42 @@ uint8arrays@^3.0.0: dependencies: multiformats "^9.4.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + universalify@^0.1.0: version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" -utf8@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - util-deprecate@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== -v8-compile-cache-lib@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz" - integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== varint@^5.0.2: version "5.0.2" @@ -3642,41 +3083,30 @@ varint@^6.0.0: resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== -web3-utils@^1.3.4: - version "1.7.3" - resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.3.tgz" - integrity sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg== +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: - bn.js "^4.11.9" - 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" + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" which@2.0.2, which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - 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== - wordwrapjs@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== dependencies: reduce-flatten "^2.0.0" @@ -3684,12 +3114,12 @@ wordwrapjs@^4.0.0: workerpool@6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -3698,15 +3128,8 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@7.4.6: version "7.4.6" @@ -3715,37 +3138,37 @@ ws@7.4.6: y18n@^5.0.5: version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.2: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -3768,12 +3191,12 @@ yargs@16.2.0, yargs@^16.2.0: yn@3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zod@^3.22.3: